#include <unistd.h>
#include <stdio.h>
int main ()
{
int pid = fork();
if(pid < 0) {
printf("create process error. ret=-1"); //ret=0
return -1;
}
if(pid > 0) //父进程中,pid是子进程到进程号
{
int status = 0;
if(waitpid(pid, &status, 0) == -1) //这里阻塞一直等待
{
printf("wait child process error! ret=-1"); //ret=0
}
printf("grandpa process exit.\n");
exit(0);
}
pid = fork();
if(pid < 0) {
printf("create process error. ret=0");
return -1;
}
if(pid > 0)//新到父进程退出,最开始到父进程也随即退出
{
printf("father process exit. ret=0");
exit(0);
}
//以后的子进程交给init进程接管
while(1)
{
sleep(1);
printf("son(deamon) process running.\n");
}
return 0;
}