Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
5
Добавлен:
26.05.2014
Размер:
1.08 Кб
Скачать
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/user.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
int pid1,pid2,pid3,dead1,dead2,dead3,status1,status2,status3;

switch(fork())
{
case -1:
printf("error \n");
case 0:
pid1=getpid();
printf("begin grandfather,his pid is %d\n",pid1);

switch(fork())
{
case -1:
printf("error \n");
case 0:
pid2=getpid();
printf("begin father,his pid is %d\n",pid2);

switch(fork())
{
case -1:
printf("error \n");
case 0:
pid3=getpid();
printf("begin son,his pid is %d\n",pid3);
printf("press any key \n");
while(!getchar())
{
sleep(1);
}
exit(3);
default:
dead3=wait(&status3);
}
printf("son is dead, pid of dead son is %d\n",dead3);
printf("his status is %d\n",status3>>8);

exit(2);
default:
dead2=wait(&status2);
}

printf("father is dead, pid of dead father is %d\n",dead2);
printf("his status is %d\n",status2>>8);
exit(1);

default:
dead1=wait(&status1);
}

printf("grandfather is dead, pid of dead grandfather is %d\n",dead1);
printf("his status is %d\n",status1>>8);

return 0;
}

Соседние файлы в папке Esin