僵尸进程,孤儿进程及代码实现

僵尸进程是指子进程退出后,父进程未读取其退出码,导致资源无法回收的状态,可能造成内存泄漏和新进程无法创建。孤儿进程则是父进程先退出,子进程被init进程领养并回收资源。通过代码模拟,展示了僵尸进程的创建与孤儿进程的处理过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

###僵尸进程
父进程调用fork()创建子进程,通常情况下,子进程运行时,父进程调用wait()或waitpid()函数等待子进程,子进程退出后,父进程接收到子进程的退出码,并释放子进程资源。
但如果父进程没有接收到子进程的退出码,那子进程的资源便无法回收,子进程将会以终止状态保持在进程表中,直到父进程读取它的退出码,这种子进程也就叫僵尸进程。

####僵尸进程的危害
1.僵尸进程虽然已经不再工作,但它自己那部分资源却未得到释放,会造成内存泄漏
2.计算机能够运行的进程是有限的,僵尸进程过多将导致新进程无法创建
3.僵尸进程一直保持退出状态,这是需要task_struct维护的,有一定开销。

####模拟实现僵尸进程

//模拟一个持续30s的僵尸进程
 
  1	#include<stdio.h>
  2 #include<unistd.h>
  3 #include<stdlib.h>
  4 
  5 
  6 int main()
  7 {
  8     pid_t pid = fork();//创建一个子进程
  9 
 10     if (pid<0)//创建子进程失败
 11     {
 12         printf("create child process is failed!!\n");
 13     }
 14 
 15     else if (pid >0)//父进程
 16     {
 17         printf("parent process is sleeping:%d\n",getpid());
 18         sleep(30);
 19     }
 20     else//子进程
 21 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值