OS X中如何獲取當前運行程序的路徑


OS X的執行程序一般分為兩種。一種是控制台程序,一種是帶有GUI的OS X應用程序。

控制台程序往往就一個文件構成executable,而GUI應用通常是一個包(即文件夾),里面除了executable之外還有其它資源。

對於一個GUI程序來說,我們可以通過讀取Bundle來獲得資源文件。那么對於控制台程序來說,如果要獲得其執行時的路徑就很有必要了。

比如,我做一個OpenCL程序,那么往往會將OpenCL內核源文件與應用放在一起。


在OS X中獲得executable當前路徑的方法很簡單,首先引入頭文件——

#include <mach-o/dyld.h>

然后,調用

int _NSGetExecutablePath(char* buf, uint32_t* bufsize)

即可。

這個函數適用於iOS2.0及更高版本以及OS X10.2及更高版本。

下面提供代碼例子片段:

#include <mach-o/dyld.h>

int main(void)
{
    char path[512];
    unsigned size = 512;
    _NSGetExecutablePath(path, &size);
    path[size] = '\0';
    printf("The path is: %s\n", path);
}

 
順便提一下,在Linux中要獲得當前程序的路徑使用readlink接口,引入頭文件<unistd.h>即可。其聲明為:

int readlink(const char * path ,char * buf,size_t bufsiz);

代碼片段:

#include <unistd.h>

int main(void)
{
    char path[512];
    int size = readlink("/proc/self/exe", path, 512);
    path[size] = '\0';
    printf("The path is: %s\n", path);
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM