Linux では、子プロセスの実行中に親プロセスが何らかの理由で終了した場合、その子プロセスは孤立プロセスと呼ばれます。
次のコードを書きます。
子プロセスは常に実行されており、親プロセスは一定時間実行すると自動的に終了します。プログラムを実行して現象を観察します。
最初は、子プロセスは親プロセスと同時に実行されます。しばらくすると、親プロセスが終了し、子プロセスが続行されます。
親プロセスが直接消滅したことがわかります。そして、子プロセスのPPID は1になります。
したがって、親プロセスが終了した後、OS はプロセス1 を子プロセスの新しい親プロセスにし、この養子プロセスは孤立プロセスであると結論付けることができます。OS がオーファン プロセスを採用しない場合、オーファン プロセスは決してリサイクルされず、その PCB は常に維持され、メモリ空間を占有します。
同時に、孤立したプロセスのステータスがS+からSに変化したこと、つまり、フォアグラウンドで実行中からバックグラウンドで実行中になっていることを確認しました. この時点で、ctrl + cを使用して終了することはできなくなりました.プロセスを終了するには、コマンドkillall [プロセス名] またはkill -9 [ PID]を使用する必要があります。