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