/proc/net
私は、パケット スニッフィングを行わない Linux 用のネットワーク モニターを開発中です。ファイルからネットワーク統計と関連データを読み取る予定です。
/proc
これは、カーネルの内部データ構造を反映する仮想ファイルシステムであるプロセスファイルシステムのマウントポイントであることがわかっています。
どのようにデータが取り込まれるのか、OS 内部を直接読み取ることが可能なのかを知りたいです。
答え1
/proc
ディレクトリとファイルの内容は、アプリケーションがアクセスしたときにその場で構築されます。そのため、ディレクトリとファイルの内容を作成するユーティリティは見つかりません。どのようにそこにデータがあるのかを知りたい場合は、カーネルコードまたはカーネルドキュメントソースコードでは、エントリはさまざまな部分によって作成されます。ネットワークコード/proc/net
の多くのエントリは、ネットワークドキュメント。
これは、OS 内部を読み取るための最も低レベルな方法です。さらに深く理解するには、カーネル ドライバーを作成するしかありません。
ネットワーク関連の情報を取得する別の方法は、ioctl
ソケットgetsockopt
の呼び出しを使用することです。これは、C では便利な場合があります。1 つの方法では取得できても、他の方法では取得できない情報やその逆のものがあると思いますが、詳細はわかりません。