Mam następujący kod, który tworzy widelec dziecka. I chcę zabić dziecko przed zakończeniem jego realizacji w rodzicu. jak to zrobić?jak zabić dziecko widelca?
#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??
}
'widelec()' zwraca 'pid_t' , a nie 'int', więc powinieneś zadeklarować swoją zmienną jako taką. –
Niezwiązane z pierwotnym pytaniem: Kiedy fork zwróci nowy proces zostanie utworzony (w przypadku powodzenia) i zarówno rodzic, jak i dziecko kontynuują wykonywanie od miejsca, w którym zostało wywołane 'fork'. pid = 0 dla procesu potomnego (cóż, zawsze można go uzyskać przez getpid()) i pid> 0 dla procesu nadrzędnego. Błąd występuje tylko wtedy, gdy fork zwraca wartość -1. W twoim kodzie traktujesz część "proces nadrzędny" jako błąd. –
możliwy duplikat [Jak zabić proces potomny przez proces nadrzędny?] (Http://stackoverflow.com/questions/6501522/how-to-kill-a-child-process-by-the-parent-process) – goozez