readlink函式 獲取程式的執行路徑

2021-07-11 12:05:37 字數 555 閱讀 7359

readlink(取得符號連線所指的檔案)

相關函式 stat,lstat,symlink

表頭檔案 #include

定義函式 int readlink(const char * path ,char * buf,size_t bufsiz);

函式說明 readlink()會將引數path的符號連線內容存到引數buf所指的記憶體空間,返回的內容不是以null作字串結尾,但會將字串的字元數返回。若引數bufsiz小於符號連線的內容長度,過長的內容會被截斷。

返回值 執行成功則傳符號連線所指的檔案路徑字串,失敗則返回-1,錯誤**存於errno。

錯誤** eaccess 取檔案時被拒絕,許可權不夠

einval 引數bufsiz 為負數

eio i/o 訪問錯誤。

eloop 欲開啟的檔案有過多符號連線問題。

enametoolong 引數path的路徑名稱太長

enoent 引數path所指定的檔案不存在

enomem 核心記憶體不足

enotdir 引數path路徑中的目錄存在但卻非真正的目錄。

readlink 獲取符號鏈結,獲取檔案絕對路徑

相關函式 stat,lstat,symlink 表頭檔案 include 定義函式 ssize t readlink const char path,char buf,size t bufsiz 函式說明 readlink 會將引數path的 符號鏈結內容儲存到引數buf所指的記憶體空間,返回的內容...

使用readlink讀取鏈結檔案指向的內容

有時我們需要讀取鏈結檔案指向的內容,比如,給定乙個程序的fd,我們想知道這個fd具體是什麼東西,那麼,就可以在 proc fd目錄下看到該fd指向的內容,只不過這個目錄下該fd是乙個鏈結檔案,我們需要的是該檔案指向的內容。此時就可以用readlink這個system call,具體用法很簡單,比如 ...

獲取函式或程式相關的原始碼

問題來了 如何確定相應的程式在哪個包下呢?下面以centos為例,檢視ls命令位於哪個包 which ls 這個是注釋 which 找出shell命令的安裝路徑 bin ls 找出該檔案屬於哪乙個安裝的軟體 rpm qf bin ls debian版本如ubuntu使用 dpkg s bin ls ...