ホームページ >バックエンド開発 >C++ >`/proc` に直接アクセスせずに、Linux 上で実行中のプロセスとその開いているファイルを効率的に一覧表示するにはどうすればよいですか?

`/proc` に直接アクセスせずに、Linux 上で実行中のプロセスとその開いているファイルを効率的に一覧表示するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-09 01:05:11637ブラウズ

How Can I Efficiently List Running Processes and Their Open Files on Linux Without Directly Accessing `/proc`?

Linux 上で実行中のプロセスと開いているファイルをリストする

Linux システム上で実行中のプロセスをリストすることは、システム管理者と開発者の両方にとって共通のタスクです。ただし、利用可能なほとんどのソリューションでは、/proc/ ファイル システムを直接読み取る必要があるため、エラーが発生しやすく非効率的になる可能性があります。

/proc/ ファイル システムへの直接アクセスの回避

/proc/ ファイル システムへの直接アクセスの欠点を回避するには、次のような代替アプローチを検討できます。

1. Procps-ng ライブラリ (libproc)

Procps-ng は、procps ライブラリ (libproc) を含む堅牢なプロセス監視ツール スイートです。このライブラリは、開いているファイルなど、実行中のプロセスに関する情報を取得するための包括的な API を提供します。 GitLab からダウンロードできます:

  • ソース: https://gitlab.com/procps-ng/procps
  • Readproc API: https://gitlab.com/procps-ng/procps/-/blob/master/library/readproc.c

2. libproc ヘッダー

ほとんどの Linux ディストリビューションには、procps-ng に似た API を提供する libproc と呼ばれるライブラリが含まれています。 procps-ng ソース コード内のファイル /proc/readproc.c は、このライブラリの使用方法を理解するための有用なリファレンスを提供します。

使用例

いずれかを使用するにはこれらの API については、一般的なプロセスに従うことができます:

  1. 必要なヘッダーを含める
  2. プロセス リストへの接続を開きます。
  3. プロセスをループし、プロセス ID、名前、開いているファイルなどの情報を収集します。
  4. 接続を閉じます.

追加リソース

ここにいくつかあります役立つ追加リソース:

  • [procps-ng Documentation](https://www.gnu.org/software/procps/)
  • [libproc Manual Page] (https://linux.die.net/man/3/getproc)

以上が`/proc` に直接アクセスせずに、Linux 上で実行中のプロセスとその開いているファイルを効率的に一覧表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。