linux
windows
cc++
c#很多時候,我們會把資源檔案放到可執行檔案的相對位置,比如跟可執行檔案放在一起。所以很有必要獲得當前可執行檔案的絕對路徑,然後再找到資源檔案的路徑。
在windows下,可以用getmodulefilename來獲得當前可執行檔案的名字,但是linux下這個情況就變的比較複雜。
首先,我沒有發現類似的函式,只能用ar**[0]來獲得可執行檔名。開始linux 下有link/symbol link這個噁心又可愛的東西,比如你可以把/usr/local/evol3d/demo.exe ln 成/usr/bin/ev-bin 。這個時候,使用者要是執行ev-bin 你就傻眼了。
經過我向高手的多天請教,終於發現乙個簡單的方法:
1. 當前程式執行的時候,你可以去讀取/proc/self/exe, 這個檔案就是當前程序的可執行檔案的乙個連線。 這個鏈結就是指向類似於getmodulefilename的結果。這裡特別感謝我前男同事:美麗的芳芳姑娘
2. readlink函式, readlink可以把連線的名字轉成實際檔名。
注:本方法純屬個人創造,並在本人機器上測試正確,如有不當,敬請指教。
**如下。
std::string _exename = "/proc/self/exe";
size_t linksize = 256;
char exename[256] = ;
if(readlink(_exename.c_str() , exename, linksize) !=-1 )
VC 獲取可執行檔案當前目錄
char lpszcurrentpath max path max path是win32定義的乙個巨集,表示windows允許的最大路徑255 getcurrentdirectory max path lpszcurrentpath getcurrentdirectory可以獲取程式當前執行的目錄,...
Linux下執行可執行檔案
我們通常會為計算機配置環境變數 path,echo path 檢視當前的環境變數包含的目錄。這些目錄下的可執行檔案就無需輸入完整路徑來執行,直接輸入命令就行,我們shell中常使用的一些linux命令,例如man,cat等的目錄都被包含在該path目錄中,所以直接在shell中輸入這些命令就可以。即...
linux下獲取當前目錄
1.取得當前工作目錄 相當於windows下的getcurrentdirectory include stdio.h include stdlib.h include string.h include unistd.h int main else return 0 2.取得實際檔案目錄 相當於win...