进程控制学习笔记

文章介绍了进程在退出时的资源释放问题,孤儿进程是父进程结束后子进程仍然存在,由init进程接管。僵尸进程是已结束但资源未被回收的进程,需父进程通过wait或waitpid函数来清理。waitpid函数用于等待特定子进程的结束,而wait会等待任何子进程的结束。
摘要由CSDN通过智能技术生成

进程退出

子进程的退出需要父进程对其资源的释放,子进程只能对用户区的数据进行释放,无法完成对内核区的释放。
在这里插入图片描述
在这里插入图片描述
可以获取到。
在这里插入图片描述
两个退出的区别:
系统调用不会刷新缓冲区,只会显示”hello"(/n会刷新缓冲区)。
而C库函数调用会刷新缓冲区,会将“world"显示出来,return 0 相当于exit(0)。

孤儿进程

父进程结束了,子进程依然存在。
每出现孤儿进程,内核就会把其父进程设置为init(pid 为 1),而init进程就会循环的wait()它的已经退出的子进程。
init进程处理孤儿进程的善后工作。
孤儿进程并没有什么危害。

僵尸进程

在这里插入图片描述
Z+:进程类型,ps aux 可以查看,表示僵尸进程
<defunct>不存在的,死了的
解决方式:
需要父进程去释放回收子进程资源,无法使用kill -9杀死僵尸进程。

  1. 可以杀死父进程而通过init进程杀死僵尸进程
  2. *父进程使用wait()\waitpid()彻底清除僵尸进程

进程回收

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
父进程调用wait()函数时,该父进程会被挂起(阻塞),直到它的一个子进程退出或者收到一个不能被忽略的信号时。
当有子进程退出,会返回子进程的进程号,如果所有子进程都已经结束,没有子进程了,就会立即返回-1。

status 参数传入返回值:👇
在这里插入图片描述
WEXITSTATUS(status),进程通过return x或者 exit(x)后,该宏就可以返回x值
WTERMSIG(status),kill -9,则返回进程终止的信号编号9.

waitpid()函数

pid:
0和-1用的最多。

在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猛笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值