【Linux系统编程】特殊进程之孤儿进程
运行结果如下:
发布日期:2021-06-29 20:56:49
浏览次数:2
分类:技术文章
本文共 886 字,大约阅读时间需要 2 分钟。
进程运行结束,但子进程还在运行(未运行结束)的子进程就称为(Orphan Process)。孤儿进程最终会被 init 进程(进程号为 1 )所收养,并由 init 进程对它们完成状态收集工作。
孤儿进程是没有父进程的进程,为避免孤儿进程退出时无法释放所占用的资源而变为僵尸进程(什么是僵尸进程,),进程号为 1 的 init 进程将会接受这些孤儿进程,这一过程也被称为“收养”。init 进程就好像是一个孤儿院,专门负责处理孤儿进程的善后工作。每当出现一个孤儿进程的时候,内核就把孤 儿进程的父进程设置为 init ,而 init 进程会循环地 wait() 它的已经退出的子进程。这样,当一个孤儿进程凄凉地结束了其生命周期的时候,init 进程就会代表党和政府出面处理它的一切善后工作。因此孤儿进程并不会有什么危害。
注意:如果是64位系统,孤儿进程的父进程号并不是 1 号。
孤儿进程的测试例子:
#include#include #include #include int main(){ pid_t pid; //创建进程 pid = fork(); if (pid < 0){ // 出错 perror("fork error:"); exit(1); }else if (pid == 0){//子进程 sleep(2); // 保证父进程先结束 printf("son proess: [son id] = %d, [son's father id] = %d\n", getpid(), getppid()); exit(0); }else if(pid > 0){ // 父进程 printf("father process, i am exited\n"); exit(0); } return 0;}
运行结果如下:
参考资料:
转载地址:https://dengjin.blog.csdn.net/article/details/52123812 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月19日 18时37分32秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux ALSA声卡驱动之四:Control设备的创建
2021-07-03
Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)
2021-07-03
RT-thread相关
2021-07-03
Linux 2.6内核Makefile浅析
2021-07-03
编译和链接的过程
2021-07-03
Git学习(二):git-rev-parse命令初识
2019-04-30
vim字符串替换
2019-04-30
C语言:堆和栈的区别是什么?
2019-04-30
C语言:二级指针(指向指针的指针)详解
2019-04-30
C语言:断言assert函数完全攻略
2019-04-30
C语言:命令行选项解析函数---getopt()和getopt_long()
2019-04-30
C语言:inline,static inline
2019-04-30
Git学习(三):Git 撤销commit文件 和 回退push的文件
2019-04-30
WAV系列之一:G711编解码原理及代码实现
2019-04-30
WAV系列之二:ADPCM编解码原理及代码实现
2019-04-30
详解shell中source、sh、bash、./执行脚本的区别
2019-04-30
Git学习(四):git clean的用法
2019-04-30
Linux命令(一): ln - 创建和删除软、硬链接
2019-04-30
C语言:static关键字的作用
2019-04-30