dev/c/zombie/zombie.c

32 lines
994 B
C
Raw Permalink Normal View History

2012-03-02 12:16:22 +04:00
#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;
}