0
ゾンビのプロセスを避けるには?この状況でinitプロセスが正確に何をするのでしょうか?
私はこのプログラムを見て、それを取得することができていませんでした: はどのようにこのプログラムは、ゾンビプロセスを作成しない:それは、出口をしたときゾンビのプロセスを避けるには?この状況でinitプロセスが正確に何をするのでしょうか?
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(void)
{
pid_t p = fork();
if (p != 0)
{
waitpid(p, NULL, 0); /* See if the child already had ended. */
sleep(1); /* Wait 1 seconds for the child to end. And eat away the SIGCHLD in case if arrived. */
pause(); /* Suspend main task. */
}
else
{
sleep(3); /* Just let the child live for some tme before becoming a zombie. */
}
return 0;
}
ここでは正確に何を理解しようとしていますか?あなたのコードにはどんな問題がありますか? –
コードは大丈夫です。一部のリファレンスから取得したコードです。ちょうどその説明をしたい..それはどのようにゾンビのプロセスを作成します。 – pankaj
Initはこの状況で何もしません。プロセスが生成された子プロセスの戻り状態を待つ前にプロセスが終了すると、initプロセスが終了するまで、作成されたプロセスは終了後「ゾンビプロセス」になります。 あなたの場合、親プロセスは待機します。だから、initは何もしない。 –