18.29ゾンビプロセス

  ゾンビプロセス(ゾンビ)

  しかし、プロセスはまだ余波に対処していなかった親プロセスが終了したの(子プロセスの終了についての詳細は、リソースの解放は、それはまだ占有されています)。

  ゾンビプロデュース:

  exitコマンドは、自分自身の人生を終了したときに呼ばれるプロセスでは、実際には、それは実際に破壊されていませんが、ゾンビ(ゾンビ)と呼ばれる(システムコール出口データ構造を残し、その役割は、撤退のプロセスを作ることですしかし、それだけで通常のプロセスに制限されている)はゾンビプロセスがその完全な破壊をもたらすものではありませんになります。Linuxプロセスの状態では、ゾンビプロセスは、プロセスが終了に応じてのみ、プロセスのリスト内の位置を保持するために、スケジュールすることができない、実行可能コードが存在しない、それはほとんどのメモリ空間のすべてを与えている、非常に特別なものです任意のメモリ空間を占有しなくなった、加えて、ゾンビプロセスを収集する他のプロセスのステータスおよびその他の情報。()は、親プロセスがまだそこにある子プロセスの終了時にフォークで子プロセスを生成しますが、親プロセスのフォークが(前にSIGCHLD信号処理機能をインストールしなかった場合は)プロセスを削除するためにそれを提供するために、その親を必要とし、その後、子供がなり、ゾンビプロセスは、rootで、殺す-9ゾンビプロセスを殺すことができない場合でも、通常の時間の終わりではありません。この時点で親プロセスが終わったならば、それはそれを削除するためにinitプロセスが自動的に子プロセスを引き継ぐ、またはそれをクリアすることができます。親プロセスはサイクルではなく、終わりである場合は、その後、子供はシステムが時々ゾンビの多くを持っている理由である、ゾンビ状態のままになります。

  ビューゾンビプロセス:

  コマンドを使用してPS -A、あなたがマークされ現存しないプロセスがゾンビプロセスで見ることができます。

  クリアゾンビプロセス:

  それはそれを削除するために1死に親プロセス、子プロセスを書き換えます。具体的なアプローチは、SIGCHLDシグナルを引き継ぐことです。子供の死、SIGCHLDシグナルが親に送られた後、親プロセスは、この信号を受信し、それを削除するには、子プロセスのためのwaitpid()関数を実行します。これは、原理に基づいている:親が呼び出すために待機していない場合でも、カーネルは、デフォルトの処理が無視されていても、それをSIGCHLDにメッセージを送信します、あなたがこのメッセージに応答したい場合は、ハンドラを設定することができます。

#include <signal.hに> 
信号(SIGCLD、SIG_IGN)。

  2.親プロセスは殺すために。親の死、ゾンビプロセスが「孤立」になるために、彼の第1のプロセスのinitのいずれかを持っていた、initは常にゾンビプロセスをクリーンアップするための責任を負うことになります。それが生成するすべてのゾンビプロセスも消えます。


 

おすすめ

転載: www.cnblogs.com/baixu/p/11226073.html