Linux下獲取當前程序的絕對路徑


在Linux開發應用時,我們常常需要在程序中獲取當前程序絕對路徑,我們可以通過readlink讀取符號鏈接/proc/self/exe進行獲取,這個符號鏈接代表當前程序,它的源路徑就是當前程序的絕對路徑,比如我們在終端下鍵入命令:

[yangye@localhost ~]$ ls -ld /proc/self/exe
lrwxrwxrwx 1 yangye yangye 0 2月  18 16:05 /proc/self/exe -> /usr/bin/ls

可以看到/proc/self/exe指向ls命令的絕對路徑。

ok,清楚原理后接下就是完整代碼:

#include <string>
#include <limits.h>
#include <sys/types.h>

string getExePath()
{
  char result[PATH_MAX];
  ssize_t count = readlink( "/proc/self/exe", result, PATH_MAX );
  string exePath = string( result, (count > 0) ? count : 0 );
  size_t pos = exePath.find_last_of("\\/");
  return (string::npos == pos)
           ? ""
           : exePath.substr(0, pos);
}

上面代碼中最終返回的是程序所在目錄,如果需要程序絕對路徑時直接返回exePath即可不用再做字符串分割。


免責聲明!

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



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