3

プロセスが O_DIRECT を使用してファイルを開いたかどうかを知りたいのですが、プロセスが起動された後にしか調べることができません (つまり、strace はオプションではありません)。/proc/$pid/fd/ を調べて何か役に立つものがないか調べてみましたが、ありませんでした。私の目標は、システム上の数百人のユーザーのいずれかが O_DIRECT でファイルを開いたかどうかを追跡することです。これは可能ですか?

4

2 に答える 2

2

カーネル 2.6.22 以降、/proc/$pid/fdinfo/$fd には 8 進数のフラグ フィールドが含まれています。http://www.kernel.org/doc/man-pages/online/pages/man5/proc.5.htmlを参照してください。

于 2012-05-22T14:15:41.723 に答える
2

I don't think it's visible in /proc or elsewhere in user space.

With kernel code, it's possible:
1. Get the process's task_struct (use find_task_by_pid).
2. Go over files - use task->files->count and task->files->fd_array. 3. Look for file->f_flags & O_DIRECT.

于 2012-05-22T06:46:10.890 に答える