[英]Get file name/path from a file descriptor from a Linux kernel module?
在 linux 內核模塊中,有沒有辦法從unsigned int fd
獲取文件名/路徑?
我知道這個答案: 如何從內核模塊內的文件描述符獲取文件名? 但是如果我理解正確的代碼,我也需要一個struct files_struct
。
編輯:
請停止投票,因為它不是重復的。 我正在尋求一種從內核模塊而不是使用系統工具以純 C 格式獲取文件名/路徑的方法。 換句話說:在 /procself/fd/ 上運行 readlink不是一個好的答案。
編輯2:
內核的syscall read ssize_t read(int fd, void *buf, size_t count);
需要 3 個參數,其中一個是 fd。 很明顯,以某種方式read
能夠從單個文件(而不是 inode 內的所有文件)中讀取。 問題是如何。
您引用的問題的答案中的代碼是您需要做的。 是的,需要來自任務的struct files_struct
,因為文件描述符僅在files_struct
的上下文中有意義(通常,每個進程都有一個)。 文件描述符不是全局唯一的,只是單個打開文件表中的索引。
如果您的代碼在進程上下文中運行(例如,通過系統調用調用),那么您可以將current->files
用於當前任務的files_struct
。 這就是read()
所做的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.