Linux/Unix では /proc/net ファイルはどのように作成されるのでしょうか?

Linux/Unix では /proc/net ファイルはどのように作成されるのでしょうか?

/proc/net私は、パケット スニッフィングを行わない Linux 用のネットワーク モニターを開発中です。ファイルからネットワーク統計と関連データを読み取る予定です。

/procこれは、カーネルの内部データ構造を反映する仮想ファイルシステムであるプロセスファイルシステムのマウントポイントであることがわかっています。

どのようにデータが取り込まれるのか、OS 内部を直接読み取ることが可能なのかを知りたいです。

答え1

/procディレクトリとファイルの内容は、アプリケーションがアクセスしたときにその場で構築されます。そのため、ディレクトリとファイルの内容を作成するユーティリティは見つかりません。どのようにそこにデータがあるのか​​を知りたい場合は、カーネルコードまたはカーネルドキュメントソースコードでは、エントリはさまざまな部分によって作成されます。ネットワークコード/proc/netの多くのエントリは、ネットワークドキュメント

これは、OS 内部を読み取るための最も低レベルな方法です。さらに深く理解するには、カーネル ドライバーを作成するしかありません。

ネットワーク関連の情報を取得する別の方法は、ioctlソケットgetsockoptの呼び出しを使用することです。これは、C では便利な場合があります。1 つの方法では取得できても、他の方法では取得できない情報やその逆のものがあると思いますが、詳細はわかりません。

関連情報