簡體   English   中英

從 Linux 內核模塊的文件描述符中獲取文件名/路徑?

[英]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.

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