首页 > 解决方案 > 用一个例子解释重新养育

问题描述

我正在尝试了解 linux 中的重新育儿过程。所以当父进程突然退出时,子进程被init进程采用。这是重新育儿。
我无法理解以下显示重新养育如何工作的代码。
首先,该进程被分叉并且子进程运行。
第一个“printf”语句被执行。
然后调用 sleep()。为什么在此之后打印“终止”?
是否曾经调用过父进程?
请有人解释一下这是如何工作的?

#include <stdio.h>
#include <unistd.h>

int main() {
  if (fork() == 0) {
    // child process
    printf("My parent's PID is %d\n", getppid());
    sleep(2);
    printf("My parent's PID is %d\n", getppid());
  } else {
    // parent process
    sleep(1);
  }
  // both processes
  printf("Terminated\n");
}


输出:

My parent's PID is 18892
Terminated
shell $ My parent's PID is 1
Terminated

标签: clinuxprocess

解决方案


推荐阅读