趣味答题

导航菜单



当前位置: 首页  /  科技  /  正文

孤儿进程:解密Linux系统编程中最特殊的进程

阅读:30

孤儿进程:解密Linux系统编程中最特殊的进程

01. 孤儿进程概述

父进程运行结束,但子进程还在运行的子进程就称为孤儿进程(Orphan Process)。孤儿进程最终会被 init 进程(进程号为 1 )所收养,并由 init 进程对它们完成状态收集工作。

孤儿进程是没有父进程的进程,为避免孤儿进程退出时无法释放所占用的资源而变为僵尸进程,进程号为 1 的 init 进程将会接受这些孤儿进程,这一过程也被称为“收养”。init 进程就好像是一个孤儿院,专门负责处理孤儿进程的善后工作。每当出现一个孤儿进程的时候,内核就把孤儿进程的父进程设置为 init ,而 init 进程会循环地 wait() 它的已经退出的子进程。这样,当一个孤儿进程凄凉地结束了其生命周期的时候,init 进程就会代表党和政府出面处理它的一切善后工作。因此孤儿进程并不会有什么危害。

注意:

在有些启动图形界面的系统中,有些收养孤儿进程的并不一定是1号进程。

02. 孤儿进程代码

孤儿进程代码

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

int main(void)

{

int i = 0;

pid_t pid = -1;


//孤儿进程

pid = fork();

if (-1 == pid)

{

perror("fork");

goto err0;

}

else if (0 == pid)

{

while(i < 10)

{

printf("I am child process %d --> %d\n", getpid(), i++);

sleep(2);

}

exit(0);

}

return 0;

err0:

return 1;

}

测试结果:


03. 附录

标签

Linux系统编程特殊进程孤儿


相关文章列表

Linux系统编程:探索Linux进程调度的奥秘

Linux系统编程:探索Linux进程调度的奥秘

01. 概述操作系统要实现多进程,进程调度必不可少。有人说,进程调度是操作系统中最为重要的一个部分。我觉得这种说法说得太绝对了一点,就像很多人动辄就说“某某函数比某某函数效率高XX倍”一样,脱离了实际...


微软跨界!Linux发行版现已支持XFS根文件系统

微软跨界!Linux发行版现已支持XFS根文件系统

当许多Linux发行版在评估新的根文件系统选项或甚至像OpenZFS这样的特性,微软内部Linux发行版到本月才开始支持XFS作为根文件系统选项。随着这个月对微软内部Linux发行版CBL-Marin...


为编程语言设计怎样的错误处理方式才是“好的”?

为编程语言设计怎样的错误处理方式才是“好的”?

“好的”错误处理方式可能因编程语言的设计目标、语言的使用方式以及开发者的偏好而异。以下是一些通用的“好的”错误处理方式:明确的错误消息:当代码出现错误时,编程语言应该提供明确的错误消息,以帮助开发者理...


月宫里的嫦娥为什么会养只兔子做宠物?有什么特殊的原因?

月宫里的嫦娥为什么会养只兔子做宠物?有什么特殊的原因?

“仙娥玉宫秋夜明,桂枝拂槛参差琼”“天冥冥,云濛濛,白兔捣药姮娥宫”“入河蟾不没,捣药兔长生”……在我国古代神话传说中,月亮上有着琼楼玉宇、高五百丈的桂树,居住着服食不死药后飞升的仙女嫦娥,还有蟾蜍和...


原来,在家也能学少儿编程,一年仅需上万!

原来,在家也能学少儿编程,一年仅需上万!

1未来,为什么每个孩子都应该具备编程思维学习编程,并不是为了让他成为程序员。本质上是训练孩子思维的完整性和逻辑性,培养他们看待问题和解决问题的方式,用编程思维解决生活、学习、工作中的问题。2编程启蒙,...


哪种编程语言更适合少儿学习?Scratch、Python、C,你会选择哪一个?

哪种编程语言更适合少儿学习?Scratch、Python、C,你会选择哪一个?

面对市面上形形色色的编程语言类型,经常有家长犯难问我们该如何为孩子选择合适的课程:“那种拖块看起来像玩游戏,不如 Python、C++ 这样的代码编程语⾔⾼级。”“现在是人工智能时代,直接让孩子从Py...


友情链接