2012-10-14 62 views

回答

1

的Windows:

WCHAR path[MAX_PATH]; 
GetModuleFileName(NULL, path, ARRAYSIZE(path)); 

的Linux:

char buffer[MAX_PATH]; 
readlink("/proc/self/exe", buffer, MAX_PATH); 
+0

Thanks @Barter,我有一個Windows,但它返回的路徑與.exe名稱,我怎麼能從路徑的末尾切割這個exe名稱? – Roman

+0

所有你需要做的是找到最後\並把NULL放在那個地方。或者使用['PathRemoveFileSpec'](http://msdn.microsoft.com/en-us/library/windows/desktop/bb773748(v = vs.85).aspx) –

0

有對此沒有很好的跨平臺解決方案,但是,你可以在所有主要做到這一點平臺:

  • 在Linux上:閱讀在Mac OS X上的/proc/self/exe特殊文件

char buf[PATH_MAX]; 
ssize_t len; 
if ((len = readlink("/proc/self/exe", buf, bufsize)) != -1) { 
    // buf contains the path 
} else { 
    // error 
} 
  • :在使用_NSGetExecutablePath()功能(從man 3 dyld

#include <stdint.h> 
#include <limits.h> 

uint32_t size = PATH_MAX; 
char buf[PATH_MAX]; 
if (_NSGetExecutablePath(buf, &size) != -1) { 
    // buf now contains the path 
} else { 
    // error 
} 
  • Windows:撥打GetModuleFileName()並以NULL作爲句柄。

#include <windows.h> 

char buffer[1024]; 
if (GetModuleFileName(NULL, buffer, sizeof(buffer)) != 0) { 
    // buffer contains the path 
} else { 
    // error 
} 
相關問題