现在的位置: 首页 > 综合 > 正文

linux学习之九—孤儿进程

2017年10月05日 ⁄ 综合 ⁄ 共 529字 ⁄ 字号 评论关闭

孤儿进程:如果一个子进程的父进程先于子进程结束,子进程就成为一个孤儿进程,它由init进程(进程号为1)收养,成为init进程的子进程。

#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>

int main()
{
   pid_t pid;
   pid=fork();
   switch(pid)
   {
      case 0:
        while(1)
             {
      printf("A background process,PID:%d ,ParentID:%d\n",getpid(),getppid());
      sleep(3);
             }
      case -1:
          perror("Process creation faild\n");
          exit(-1);   
      default:
      printf("I am parent process,my pid is %d\n",getpid());
      exit(0);   
   }
   return 0;
}

运行结果:

结果分析:

调用fork函数后:
父进程先执行,打印出自己的ID号3161,然后就执行完毕了;
接着子进程开始执行,打印出自己的ID号3162,和父进程ID号3161;
接着因为父进程已经执行完,提前结束,所以此时子进程为孤儿进程,由init进程(进程号1)带养,所以打印出父进程ID为1.

抱歉!评论已关闭.