特定のプロセスのすべてのスレッドは同じステータス (D、R、S、...) を共有しますか、それともこれらのスレッド間に違いがある可能性がありますか?
もしそうなら、特定のスレッドのステータスに関する情報はどこで見つけられますか?現時点では、ファイル/proc
からプロセス ステータスを読み取っています。/proc/<PID>/status
答え1
異なるスレッドが同時に異なるスケジューラ状態になることは確かに可能です。実際、それらがすべて同じ状態にある場合、それは偶然です (停止 (Z) はプロセス全体に影響するため除きます)。
サブディレクトリには、プロセスのスレッドごとにサブディレクトリが含まれます。このディレクトリ内のファイルは、プロセスごとのディレクトリ内のファイルとほとんど同じです。一部の情報は重複しています (例: メモリ関連の情報、環境、権限など)。スケジューラの状態 (実行中/スリープ中/IO など) など、スレッドに固有の情報は異なる場合があります。/proc/PID/task
答え2
ps
プロセスのすべてのスレッドのステータスを確認するには、次のコマンドを使用できます。
ps H -p 27901
これにより、プロセス 27901 に関連するすべてのスレッドとそのステータスが表示されます。