/proc/[pid]/statファイルの最初の列からPID(最初の列)を取得できることがわかりました。残りのプロパティをどこで見つけることができるかわかりません。私の考えでは、他の属性に基づいて%CPUと%MEMを計算する必要があるようです。誰でもこの問題を解決するのに役立ちますか?私のGUIはまさにtopと同じでなければなりません。私はGUIにPython3とttkを使用しています。
答え1
次のように入力する場合:
strace -o outfile top
top
すべてのシステムコールを追跡し、結果を保存しながら通常どおり実行されますoutfile
。開こうとしているファイルは、システムコールへの呼び出しとして表示されますopen(2)
。このコマンドを実行した後は、多くのtop
データを追加して読み取った内容を知らせるのに数秒で十分であるため、すばやく終了する必要があります。
私のシステムでクイックランを実行してみると、ほとんどのデータが、から/proc/<pid>/stat
出/proc/<pid>/status
てくるようです/proc/<pid>/statm
。一部の検索と実験により、これらの形式を決定できます。
答え2
man 5 procには、procファイルシステムで見つけることができる詳細な情報がたくさんあります。
procpsライブラリは、基本的にそのファイルシステムのファイルを読み込み、解析し、見つかった内容に応じて変数や構造を設定する一連の項目です。通常、「ps / topなどがX値を表示する理由」に対する答えは、「それがファイルZにあるためです」です。
私たちは、procps用のlibproc / libprocps / libwhatwillwecallitnextライブラリを積極的に再設計し、通常のライブラリに似ています。
現在はCバインディングしかありませんが(これが必要なので)将来は他のバインディングもあるかもしれません。 APIを最初に安定化し、新しいライブラリをリリースして実際の世界でどのように機能するかを確認し、それを研究する必要があります。
トップレベルのソースコードを見ることはもう一つのアイデアです。問題は、直接開発する場合、カーネルの人々がprocfsで実行するすべての作業を追跡する必要があり、ライブラリは私たちにとって面倒です。