32 lines
994 B
C
32 lines
994 B
C
|
#include <unistd.h>
|
|||
|
#include <signal.h>
|
|||
|
#include <stdlib.h>
|
|||
|
#include <sys/wait.h>
|
|||
|
#include <stdio.h>
|
|||
|
|
|||
|
int main() {
|
|||
|
int pid;
|
|||
|
int status, died;
|
|||
|
|
|||
|
pid=fork();
|
|||
|
switch(pid) {
|
|||
|
case -1: printf("can't fork\n");
|
|||
|
exit(-1);
|
|||
|
case 0 : printf(" I'm the child of PID %d\n", getppid());
|
|||
|
printf(" My PID is %d\n", getpid());
|
|||
|
// Ждем 2 секунды и завершаемся, следующую строку я закомментировал
|
|||
|
// чтобы зомби "прожил" на 2 секунды больше
|
|||
|
// sleep(2);
|
|||
|
exit(0);
|
|||
|
default: printf("I'm the parent.\n");
|
|||
|
printf(" My PID is %d\n", getpid());
|
|||
|
// Ждем завершения дочернего процесса через 10 секунд, а потом убиваем его
|
|||
|
sleep(10);
|
|||
|
if (pid & 1)
|
|||
|
kill(pid,SIGKILL);
|
|||
|
died= wait(&status);
|
|||
|
}
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|