Cプログラムからプロセスメモリに関する情報を取得するには?

Cプログラムからプロセスメモリに関する情報を取得するには?

プロセスのメモリ使用量情報を取得する必要があります。私はそれがあるかもしれないことを知っていますが、/proc/${pid}/statmそれを得るためのシステム機能はありますか?ファイルを解析するのは非効率的なようです。

ベストアンサー1

あなたはファイルをコンテキストから抜け出すので、ファイルを解析するのは非効率的だと誤って考えます。以下の情報は、/procお客様がリクエストした場合にのみ「作成」されることを既にご存知ですが、いいえ変更があるたびに更新されます。したがって、それを解析するだけでなく、カーネルはそれをテキストとして生成する必要があります。

数バイトを直接 long に読み込むことは、atoi()文字列を呼び出すよりも確かに効率的です。ただし、これをシステムコールが実行されるコンテキストの一部として考慮する必要があります。一部のファイルの内容を読み取る(またはカーネルが提供できるいくつかのバイナリAPIを呼び出すために)、実行されるすべての追加コードは文字列変換に必要な時間を短縮します。

カーネルプロセスには通常のプログラムよりも頻繁に必要なデータがあるため、そのデータを取得するためにシステムコールを実行する必要があるオーバーヘッドはなく、これらのデータに直接アクセスできます。

おすすめ記事