Io 如何判断给定进程是否使用O_DIRECT打开文件?

Io 如何判断给定进程是否使用O_DIRECT打开文件?,io,linux-kernel,posix,Io,Linux Kernel,Posix,我想知道进程是否使用O_DIRECT打开了任何文件,但我只能在进程启动后检查它(即strace不是选项)。我试图查看/proc/$pid/fd/中是否有有用的内容,但没有。我的目标是跟踪系统上数百名用户中是否有人使用O_DIRECT打开了文件。这可能吗?我认为它在/proc或用户空间的其他地方不可见 有了内核代码,就有可能: 1.获取进程的task\u结构(使用find\u task\u by\u pid)。 2.检查文件-使用任务->文件->计数和任务->文件->fd_数组。 3.查找file

我想知道进程是否使用O_DIRECT打开了任何文件,但我只能在进程启动后检查它(即strace不是选项)。我试图查看/proc/$pid/fd/中是否有有用的内容,但没有。我的目标是跟踪系统上数百名用户中是否有人使用O_DIRECT打开了文件。这可能吗?

我认为它在
/proc
或用户空间的其他地方不可见

有了内核代码,就有可能:
1.获取进程的
task\u结构(使用
find\u task\u by\u pid
)。
2.检查文件-使用
任务->文件->计数
任务->文件->fd_数组

3.查找
file->f_flags&O_DIRECT

因为内核2.6.22,/proc/$pid/fdinfo/$fd包含一个八进制的标志字段。见

谢谢。这很有效。不幸的是,我暂时停留在2.6.18上,所以我可能会尝试将此备份。谢谢。正如在另一条评论中指出的,有一个解决方案可以从用户空间使用。它只存在于比我拥有的更新的内核中,因此我可能最终使用这些信息或更新的内核代码来编写一个简单的模块来实现这一点。