Linux kernel 如何在内核空间代码中获取所有打开的文件句柄?

Linux kernel 如何在内核空间代码中获取所有打开的文件句柄?,linux-kernel,filesystems,Linux Kernel,Filesystems,我想在内核空间中编写代码,以查找系统中所有打开的文件句柄以及保存这些句柄的进程id 在用户空间中,我们可以使用实用程序“lsof”来完成。同样,我也希望在内核空间中实现同样的功能。Linux内核的优点在于它是开源的。如果您想了解如何实现类似于lsof的东西,为什么不检查它的源代码(我建议,至少它是简化的,更容易理解)或strace来了解魔法是如何发生的 如果您这样做,在某个时候您将遇到以下行 openat(AT_FDCWD, "/proc/<PID>/fd", O_RDONLY|O_

我想在内核空间中编写代码,以查找系统中所有打开的文件句柄以及保存这些句柄的
进程id


在用户空间中,我们可以使用实用程序“
lsof
”来完成。同样,我也希望在内核空间中实现同样的功能。

Linux内核的优点在于它是开源的。如果您想了解如何实现类似于
lsof
的东西,为什么不检查它的源代码(我建议,至少它是简化的,更容易理解)或
strace
来了解魔法是如何发生的

如果您这样做,在某个时候您将遇到以下行

openat(AT_FDCWD, "/proc/<PID>/fd", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC)
openat(AT_FDCWD,“/proc//fd”,O_RDONLY | O_NONBLOCK | O_目录| O_CLOEXEC)

这将提示您,对于正在运行的每个PID,
procfs
能够打印有关此进程保存的所有打开文件描述符的信息。因此,我将从这里开始我的研究和代码之旅。

我投票结束这个问题,因为Stackoverflow不是一个代码编写服务,我需要从内核空间获取所有打开文件句柄的概念或方法