我想在内核空间中编写代码来查找系统中的所有打开文件句柄以及process id
来保存这些句柄。
在用户空间中,我们可以使用实用程序" lsof
"来完成。同样,我想在内核空间中使用相同的内容。
答案 0 :(得分:1)
Linux Kernel的优点在于它是开源的。如果您想了解如何实现与lsof
类似的内容,为什么不检查它的'源代码(我建议the following implementation, from Android 4.2.2 source tree,简化并且更容易理解)或strace
来理解魔法是如何发生的?
如果你这样做,在某些时候你会遇到以下行
openat(AT_FDCWD, "/proc/<PID>/fd", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC)
这将提示您对于正在运行的每个PID,procfs
能够打印有关此进程持有的所有打开文件描述符的信息。因此,this是我开始研究和浏览代码的地方。