c - 用一个例子解释重新养育
问题描述
我正在尝试了解 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
解决方案
推荐阅读
- python - 使用过滤器时关键字不能是表达式错误
- typescript - 打字稿中装饰器的别名
- c - 尝试删除树中的节点时出现问题
- reactjs - 403 禁止 - PUT https://registry.npmjs.org/random-number-generator-baa - 禁止
- time-complexity - 此函数的时间复杂度(类似的答案但一个是错误的)
- c# - 用 C# 制作我的第一个计算器,但我被困住了
- session - 使用 JavaScript 处理自动注销重定向的最佳实践
- python - 程序冻结在创建一个大型 numpy 数组
- javascript - 如何在 useReducer 开关案例中正确测试 if-else 条件?
- javascript - 如何按位置过滤我的搜索结果以及如何重新呈现?