日期:2014-05-16  浏览次数:20713 次

关于apue上的一段代码
4 #include"apue.h"
  5 #include<sys/wait.h>
  6 int main(void)
  7 {
  8 pid_t pid;
  9 if((pid = fork()) < 0){
 10 err_sys("fork error");
 11 }else if(pid == 0){
 12 if((pid = fork()) < 0)
 13 err_sys("fork error");
 14 else if(pid > 0)
 15 exit(0);
 16 sleep(2);
 17 printf("second child,parent pid = %d\n",getpid());
 18 exit(0);
 19 
 20 }
 21 if(waitpid(pid,NULL,0) != pid)
 22 err_sys("waitpid error");
 23 exit(0);
 24 }


关于这段代码,书上说第一个子进程结束,这个子进程的子进程会被init领养,但是我的机器上没有领养,不知道哪里错了
可能是sleep时间太短了,我就sleep(9)也不行,代码错了吗?请问第一个子进程会执行printf("second child,parent pid = %d\n",getpid());吗?

------解决方案--------------------
是getppid吧,父进程PID==1.