![](/img/trans.png)
[英]List Current Directory and File Types (Dir, Reg, Lnk) in C Language using Stat and OpenDir()/ReadDir()
[英]stat file from DIR *
我編寫了一個函數,該函數接受DIR *
作為參數並列出其中的文件(使用readdir
函數)
另外,我只希望能夠stat
readdir
返回的文件。 目前尚不清楚DIR *
指向何處,所以有沒有辦法從DIR *
獲取目錄的完整路徑,或者還有其他可以用來stat
文件的方式嗎?
您可以使用dirfd()
以及其他許多答案,然后對於使用readdir()
讀取的每個條目,調用fstatat()
函數:
int fstatat(int dirfd, const char *pathname, struct stat *buf, int flags);
我認為這個相對模糊的功能可以滿足您的需求。
或者,您可以調用openat()
傳遞目錄的fd和從目錄讀取的路徑名。 然后執行fstat()
以獲取文件統計信息。
基於@unwind答案,並且由於您在Linux中:
dirfd()
獲取目錄的文件描述符 getpid()
獲取您的pid readlink()
讀取鏈接/proc/<pid>/fd/<dirfd>
。 它將通過名稱引用您的目錄!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.