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

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.xdnf.cn/news/18792.html

相关文章:

  • mysql是怎样运行的(梳理)
  • Python包管理与安装机制详解
  • EasyExcel 3.x 导出动态表头,动态sheet页
  • Rust:函数与控制流
  • 《Java反射与动态代理详解:从原理到实践》
  • 【Ansible】Ansible部署K8s集群--准备环境--配置网络
  • PEFT 模型解析(59)
  • 《数据之心》——鱼小妖的觉醒
  • ctfshow_萌新web16-web20-----文件包含日志注入
  • 《信息检索与论文写作》实验报告二 引文索引数据库检索
  • 我们来学mysql -- safe启动
  • 解析xml文件并录入数据库
  • 类似ant design和element ui的八大Vue的UI框架详解优雅草卓伊凡
  • Vue中的scoped属性
  • 推荐系统王树森(三)粗排精排
  • 【NER学习笔记】:基于AdaSeq的NER模型训练笔记
  • Linux下TCPT通信
  • 8.26 支持向量机
  • 什么样的 IP 能穿越周期,持续被用户买单?​
  • 基于大模型的智能占卜系统实战-Qwen-VL、RAG、FastAPI
  • “喵汪联盟”宠物领养系统的设计与实现(代码+数据库+LW)
  • Python编程快速上手—让繁琐工作自动化
  • OpenCV打开视频函数VideoCapture使用详解
  • 数据与端点安全 (Protect data and apps)
  • 【学习笔记】系统时间跳变会影响time接口解决措施
  • Matlab使用——开发上位机APP,通过串口显示来自单片机的电压电流曲线,实现光伏I-V特性监测的设计
  • es-toolkit 是一个现代的 JavaScript 实用库
  • UE4生成Target文件
  • 【RAGFlow代码详解-11】知识库管理
  • 无人机倾斜摄影农田航线规划