簡體   English   中英

DIR的統計文件*

[英]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()以獲取文件統計信息。

我不這么認為,但是您應該能夠使用dirfd()獲得與DIR *相對應的文件描述符,並使用它可以調用fchdir()進入該目錄。

然后, readdir()返回的名稱將成為當前目錄的本地名稱,您可以直接對其進行stat()

更新 :只是為了澄清,這是一樣的東西調用chroot()它的進程的當前目錄只是一個普通的變化。

基於@unwind答案,並且由於您在Linux中:

  • 調用dirfd()獲取目錄的文件描述符
  • 使用getpid()獲取您的pid
  • 使用readlink()讀取鏈接/proc/<pid>/fd/<dirfd> 它將通過名稱引用您的目錄!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM