2017-08-21 4 views
0

カーネルスペースにコードを書き込んで、システム内の開いているファイルハンドルをすべて検索し、それらのハンドルを保持するprocess idを探したいとします。カーネルスペースコードで開いているファイルハンドルをすべて取得する方法は?

ユーザ空間では、ユーティリティ「lsof」を使用して実行できます。同様に、カーネル空間でも同じことが必要です。

+0

Stackoverflowはコード作成サービスではないため、この質問を議論の対象外としています。 –

+0

カーネル空間からすべてのオープンファイルハンドルを取得するには、コンセプトまたは方法が必要です –

答えて

0

Linuxカーネルは、オープンソースだから大変です。 lsofと似たようなものを実装する方法を理解したいのであれば、そのソースコード(私はthe following implementation, from Android 4.2.2 source treeを簡略化して分かりやすくすることをお勧めします)またはstraceの魔法の仕組みを理解してください。

あなたがそうするだろう場合は、いくつかの点であなたが実行している各PIDのために、procfsが開いているすべてのファイルに関する情報を印刷することができることをヒントになる次の行

openat(AT_FDCWD, "/proc/<PID>/fd", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) 

遭遇しますこのプロセスが保持する記述子。したがって、 thisは私がコードを使って研究と旅を始める場所です。

関連する問題