函數名:ReadLink()
函數功能:獲取當前進程的程序名
函數實現:
1 string ReadLink(){ 2 char name[100]; 3 int rval = readlink("/proc/self/exe",name,sizeof(name)-1); 4 if(rval == -1){ 5 cout << "readlink error" << endl; 6 } 7 name[rval] = '\0'; 8 return "./"+string(strrchr(name, '/') + 1); 9 }
系統函數:
(1)readlink()函數:
函數原型:int readlink(const char *path, char *buf, size_t bufsize);
函數說明:readlink()函數會將參數path的符號連接到內容buf所指的內存空間,返回的內容不是以NULL作為字符串結尾,但會將字符串的字符數返回。若參數bufsize小於符號連接的內容長度,過長的內容會被截斷。
返回值:執行成功則傳符號連接所指的文件路徑字符串,失敗返回-1, 錯誤代碼存於errno。
(2)strrchr()函數:
函數原型:char *strrchr(const char *str, char c);
函數說明:找一個字符c在另一個字符串str中末次出現的位置(也就是從str的右側開始查找字符c首次出現的位置),並返回從字符串中的這個位置起,一直到字符串結束的所有字符。如果未能找到指定字符,那么函數將返回NULL。