当前位置: 首页 > news >正文

Linux-孤儿进程和僵死进程

文章目录

  • 孤儿进程
    • 概述
  • 僵死进程
    • 概述

孤儿进程

概述

父进程运行结束,子进程还在运行,此时,子进程就成了孤儿进程(Orphan Process)

每当出现一个孤儿进程的时候,内核就把孤儿进程的父进程设置为 init ,而 init 进程会循环地 wait() 它的已经退出的子进程。这样,当一个孤儿进程凄凉地结束了其生命周期的时候,init 进程就会代表党和政府出面处理它的一切善后工作。

因此孤儿进程并不会有什么危害。

  1  #include <stdio.h>2  #include <string.h>3 #include <stdlib.h>4 5 #include <unistd.h>6 7 8 9 //孤儿进程10 11 int test01()12 {13     pid_t pid = -1;14 15     pid = fork();16     if(-1 == pid)17     {18         perror("fork"); 19         goto err0; 20     } 21     if(pid >0) 22     { 23         sleep(2); 24         printf("父进程退出 %d\n", getpid()); 25         exit(0); 26     } 27  28     while(1) 29     { 30         printf("子进程工作 %d...\n", getppid()); 31         sleep(1); 32     } 33  34     return 0; 35 err0: 36     return 1; 37 } 38 int main(void) 39 { 40     test01(); 41     return 0; 42 }

僵死进程

概述

进程终止,父进程尚未回收,子进程残留资源(PCB)存放于内核中,变成僵尸(Zombie)进程。

这样就会导致一个问题,如果进程不调用wait() 或 waitpid() 的话, 那么保留的那段信息就不会释放,其进程号就会一直被占用,但是系统所能使用的进程号是有限的,如果大量的产生僵尸进程,将因为没有可用的进程号而导致系统不能产生新的进程,此即为僵尸进程的危害,应当避免。

  1 #include <stdio.h>2 #include <string.h>3 #include <stdlib.h>4 5 #include <unistd.h>6 7 8 9 int test01()10 {11     pid_t pid = -1;12 13     pid = fork();14     if(-1 == pid)15     {16         perror("fork");17         goto err0;18     }19 20     if(0 == pid)21     {22         printf("3s后子进程退出\n");23         sleep(3);24         printf("子进程退出...\n");25         exit(0);26     }27     else28     {29 30         sleep(3000);31     }32 33 34     return 0;35 err0:36     return 1;37 }38 39	int main()40	{41		test01();42		return 0;43	}
http://www.dtcms.com/a/352574.html

相关文章:

  • RAG中使用到的相关函数注释——LangChain核心函数
  • tracebox工具使用
  • LKT4202UGM耗材防伪安全芯片,守护您的消费电子产品
  • 从串口到屏幕:如何用C#构建一个军工级数据实时监控
  • JUC之synchronized关键字
  • Dify 从入门到精通(第 57/100 篇):Dify 的知识库扩展(进阶篇)
  • 8.26学习总结
  • 在 C# 中使用 Consul 客户端库实现服务发现
  • 卷积操作现实中的意义
  • 发力低空经济领域,移动云为前沿产业加速崛起注入云端动能
  • 微服务-24.网关登录校验-实现登录校验
  • Linux系统日志分析与存储
  • 机器学习:前篇
  • 从行业智能体到一站式开发平台,移动云推动AI智能体规模化落地
  • 产品经理操作手册(3)——产品需求文档
  • Duplicate Same Files Searcher v10.7.0,秒扫全盘重复档,符号链接一键瘦身
  • 【软件测试面试】全网最全,自动化测试面试题总结大全(付答案)
  • 告别出差!蓝蜂物联网网关让PLC程序远程修改零延迟
  • 二、JVM 入门 —— (四)堆以及 GC
  • 渗透测试术语大全(超详细)
  • C++ STL 顶层设计与安全:迭代器、失效与线程安全
  • 【C++游记】栈vs队列vs优先级队列
  • 算法编程实例-快乐学习
  • 随机森林实战:在鸢尾花数据集上与决策树和逻辑斯蒂回归进行对比
  • AI安全监控与人才需求的时间悖论(对AI安全模型、AI安全人才需求的一些思考)
  • AIDL和HIDL的AudioHal对比
  • Maya绑定基础: FK 和 IK 介绍和使用
  • lottie动画动态更改切图添加事件
  • 五自由度磁悬浮轴承:精准狙击转子质量不平衡引发的同频振动
  • pycharm 远程连接服务器报错