J'ai un programme c qui exécute un autre processus (script bash) avec fork et execlp. Quand je veux tuer ce processus, il passe à l'état de zombie. Pourquoi est-ce??Fork, execlp et kill. Processus Zombie
Créer un processus:
switch (PID_BackUp= fork())
{
case -1:
perror("fork");
printf("An error has occurred launching backup.sh script!\n");
break;
case 0:
execlp("/usr/local/bin/backup.sh", "/usr/local/bin/backup.sh", NULL, NULL, NULL);
break;
default:
printf("backup.sh script launched correctly! PID: %d\n", PID_BackUp);
break;
}
Tuer un processus:
if(kill(PID_BackUp,SIGKILL)==-1)
fprintf(stderr, "No se ha podido matar el programa: %d\n", PID_BackUp);
else
printf("\nProceso con identificador %d, se ha abortado\n", PID_BackUp);
Donc, à ce stade, le processus passe à un état de zombie. Qu'est ce que je fais mal?
Donc, le processus qui utilise fork devrait-il attendre (waitpid) pour le processus fils? J'utilise fork dans mon programme général (plateforme embarquée) donc je ne peux pas continuer à attendre le processus fils (je devrais créer un thread spécifique) –
Oui, à un certain moment, vous devriez attendre ou waitpid. Cependant, en savoir plus sur 'SIGCHLD' –