
07-01-2009
|
|
Usuário
|
|
|
Join Date: Feb 2008
Localização: China
Posts: 6
|
|
|
init adota zumbi processo?
Oi
Tentei criar um zumbi processo com o seguinte programa:
Código:
int main(void)
{
pid_t pid;
int status;
if ((pid = fork()) < 0)
perror("fork error");
else if (pid == 0){ /* child process*/
exit(0);
}
printf("child process ID: %d\n", pid);
sleep(10);
return 0;
}
Posso observar a "Z" estado com o comando ps, mas este zombie processo (a criança processo) só existe na duração de sua rescisão de seu pai rescisão. I don't wait () no processo da criança ao progenitor, por isso porque não existe o zumbi processo termina após a mãe?
Em <apue2>,
Citação:
Mas o que acontece se a mãe termine antes de a criança? A resposta é
init que o processo torna-se o processo-mãe de qualquer processo cuja
mãe termina. Dizemos que o processo tenha sido herdada por init. Que
normalmente acontece é que sempre que um processo termina, o kernel vai
através de todos os processos ativos, para ver se encerra o processo é o
pai de qualquer processo que ainda existe.
|
O meu entendimento é esta: no momento em que o pai termina, se houver criança processos já encerrados, e ainda em execução, init irá adoptar a correr mais, não o já encerrado queridos. (não o "ativo" e "ainda existe" em apue2 significa isto?) Portanto, uma criança zumbi processo não será aprovada pelo init. No meu caso, até o momento em que a mãe termina, a criança não está "ativo" e não será aprovada pelo init.
Além disso, o processo no meu programa infantil desaparece imediatamente após a mãe termina. Como já descrito, não creio que isso seja feito pelo init, então quem foi?
|