Linux下如何獲取當前可執行檔案的檔名

2022-09-11 22:18:28 字數 773 閱讀 6381

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...