Ho il seguente codice che crea un fork figlio. E voglio uccidere il bambino prima che finisca la sua esecuzione nel genitore. come farlo?come uccidere il figlio della forchetta?
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int i;
main (int ac, char **av)
{
int pid;
i = 1;
if ((pid = fork()) == 0) {
/* child */
while (1) {
printf ("I m child\n");
sleep (1);
}
}
else {
/* Error */
perror ("fork");
exit (1);
}
sleep (10)
// TODO here: how to add code to kill child??
}
'fork()' restituisce un 'pid_t' , non un 'int', quindi dovresti dichiarare la tua variabile come tale. –
Non correlato alla domanda originale: Quando fork restituisce un nuovo processo viene generato (in caso di successo) e sia padre che figlio continuano l'esecuzione dal punto in cui è stato chiamato 'fork'. pid = 0 per un processo figlio (beh, può sempre farlo tramite getpid()) e pid> 0 per un processo genitore. L'errore è solo quando la forcella restituisce -1. Nel tuo codice stai trattando una parte del "processo genitore" come un errore. –
possibile duplicato di [Come uccidere un processo figlio dal processo padre?] (Http://stackoverflow.com/questions/6501522/how-to-kill-a-child-process-by-the-parent-process) – goozez