死んだプロセスを見ることができますか?

死んだプロセスを見ることができますか?

では、man psLinuxでプロセスが持つことができるさまざまな状態を明確に説明します。

D    Uninterruptible sleep (usually IO)
R    Running or runnable (on run queue)
S    Interruptible sleep (waiting for an event to complete)
T    Stopped, either by a job control signal or because it is being traced.
W    paging (not valid since the 2.6.xx kernel)
X    dead (should never be seen)
Z    Defunct ("zombie") process, terminated but not reaped by its parent.

プロセス状態であってもX表示しないでください。しかし、これは正しいですか?これをプロセスの状態と考える理論的な方法はありますか?それとも全く100%不可能ですか?

ベストアンサー1

私はLinuxカーネルについて深く研究してきましたが、カーネルがどのように機能するのかわかりません。重要なC知識もわかりません。だからこの理論について親切にしてください:)

状態DEADが定義されているhttps://github.com/torvalds/linux/blob/master/fs/proc/array.c#L141そして使用https://github.com/torvalds/linux/blob/master/fs/exec.c#L974返品ステータスのみ提供されます。したがって、これを確認する唯一の方法は、周囲のプロセス状態を確認することです。https://github.com/torvalds/linux/blob/master/fs/exec.c#L986(または後でどこでもこの関数を呼び出すことができます...)

死んだプロセスを終了しようとすると、そのプロセスは処理され無視されます。https://github.com/torvalds/linux/blob/master/kernel/signal.c#L1363

理論的には…答えは「はい」と思います。状態としてのXは理論的に見ることができますが、実際の生活では決して起こらないかもしれません。

間違っていたら訂正してください。私はこれについて全く確信していません。

おすすめ記事