正如在SO上提到的,/ proc/self/exe上的readlink可用於獲取linux上的可執行文件路徑。 man 2 readlink建議應該使用lstat來提取所需的路徑長度。但是,當我stat/proc/self/exe時,st_size成員設置爲0.我如何獲得分配緩衝區的長度?獲取/ proc/self/exe符號鏈接的長度
1
A
回答
0
在實踐中,我會傾向於使用一個合理的規模(如256或1024,或PATH_MAX
)爲readlink
/proc/*/exe
(或/proc/self/exe
)
的一點是,幾乎總是,可執行文件都應該被人類開始,因此無論是PATH
(爲execvp(3)或一些shell)或整個文件路徑是對人友好的。我不知道任何明確使用非常長的文件名的人(在某些終端屏幕上不適合寬度)。我從來沒有聽說過文件名超過一百字節的可執行程序(或腳本)。因此,只需使用一些合理大小的本地緩衝區(如果需要的話,也可以使用strdup
)。並且readlink(2)返回緩衝區中有意義字節的數量(所以如果你真的在意,請增大緩衝區並進行循環,直到它適合)。
對於/proc/self/exe
readlink
,我會做成256個字節的緩衝區在初始化,並中止(具有有意義的錯誤消息),如果它不適合(或失敗,例如因爲/proc/
未安裝)。
1
從man 2 lstat
/proc目錄下拍攝,NOTES
下,對於大多數文件,統計()不返回 在st_size字段中指定文件的大小;而不是場返回 與值0
這就是爲什麼它不工作
相關問題
- 1. 獲取鏈表的長度
- 2. 如何獲取符號鏈接指向的符號鏈接模板中的id?
- 3. 如何獲取符號鏈接文件,看非符號鏈接的目錄
- 4. .htaccess或符號鏈接(符號鏈接)
- 5. 獲取鏈接速度 - Win32_PerfRawData_Tcpip_NetworkInterface
- 6. 使用scrapy獲取鏈接列表的內容長度
- 7. 如何獲取包含標點符號(')的長度?
- 8. 長度商標符號的
- 9. 獲取長度
- 10. 獲取連接關節的長度
- 11. 符號鏈接
- 12. 符號鏈接
- 13. 獲取UTF8中字符串的長度
- 14. 獲取C++中字符串的長度
- 15. 獲取字符串的字節長度
- 16. PowerShell 2.0獲取字符串的長度
- 17. 獲取字符數組的長度
- 18. ArrayList:獲取最長字符串的長度,獲取字符串的平均長度
- 19. 如何獲取符號鏈接列表,但不包括斷開的鏈接?
- 20. Nginx的PHP的符號鏈接獲取文檔根
- 21. 如何獲取符號鏈接的名稱?一個命令的
- 22. 兩個符號鏈接之間的符號鏈接
- 23. Apache的符號鏈接符號鏈接返回HTTP 500錯誤
- 24. 獲取QGraphicsTextItem長度?
- 25. 如何獲取當前符號鏈接目錄的父目錄?
- 26. 獲取目錄中最後創建的符號鏈接文件
- 27. Apache和象徵符號鏈接獲取父目錄的PHP
- 28. 如何獲取python中符號鏈接的修改日期?
- 29. 如何獲取符號鏈接的ctime,mtime,...?
- 30. 從符號鏈接獲取真正的路徑C#