readlink(/proc/self/exe, buf, count - 1);
生活随笔
收集整理的這篇文章主要介紹了
readlink(/proc/self/exe, buf, count - 1);
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
相關函數: stat, lstat, symlink 表頭文件: #include <unistd.h> 定義函數:ssize_t readlink(const char *path, char *buf, size_t bufsiz); 函數說明:readlink()會將參數path的符號鏈接內容存儲到參數buf所指的內存空間,返回的內容不是以\000作字符串結尾,但會將字符串的字符數返回,這使得添加\000變得簡單。若參數bufsiz小于符號連接的內容長度,過長的內容會被截斷,如果 readlink 第一個參數指向一個文件而不是符號鏈接時,readlink 設 置errno 為 EINVAL 并返回 -1。 readlink()函數組合了open()、read()和close()的所有操作。 返回值 :執行成功則返回字符串的字符數,失敗返回-1, 錯誤代碼存于errno 執行成功則返回ssize_t 錯誤代碼: EACCESS 取文件時被拒絕,權限不夠 EINVAL 參數bufsiz為負數 EIO O存取錯誤 ELOOP 欲打開的文件有過多符號連接問題 ENAMETOOLONG 參數path的路徑名稱太長 ENOENT 參數path所指定的文件不存在 ENOMEM 核心內存不足 ENOTDIR 參數path路徑中的目錄存在但卻非真正的目錄
linux系統中有個符號鏈接:/proc/self/exe 它代表當前程序,所以可以用readlink讀取它的源路徑就可以獲取當前程序的絕對路徑,如下:
#include <unistd.h> #include <stdio.h>int main(int argc , char* argv[]) {char buf[1024] = { 0 };int n;n = readlink("/proc/self/exe" , buf , sizeof(buf));if( n > 0 && n < sizeof(buf)){printf("%s\n" , buf);} }總結
以上是生活随笔為你收集整理的readlink(/proc/self/exe, buf, count - 1);的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux中使用SecureCRT上传、
- 下一篇: tomcat+nginx+redis实现