1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
main()
{
int stat;
int returnPid;
int i;
returnPid = fork();
if (returnPid == -1)
{
perror("can't fork"); exit(1);
}
else if (returnPid == 0)
{ // Child
for (i=0; i<2; i++)
{
if ((returnPid = fork()) == 0)
{ // GrandChild
printf("GrandChild: child pid = % d, my pid = %d, parent pid = %d \n",
returnPid, getpid(), getppid());
exit(0);
}
}
wait();
printf("Child: child pid = % d, my pid = %d, parent pid = %d \n",
returnPid, getpid(), getppid());
exit(0);
}
else
{ // Parent
wait();
printf("Parent: child pid = %d, my pid = %d, parent pid = %d \n ",
returnPid, getpid(), getppid(0));
exit(0);
}
}
|