Linux进程等待

Linux进程等待

一.什么是进程等待

通过系统调用wait和waitpid,来进行对子进程进行状态检测与回收功能。

二.为什么要有进程等待

1。之前讲过,子进程退出,父进程如果不管不顾,就可能造成'僵尸进程'的问题,进而造成内存泄漏。

2.另外,进程一旦变成僵尸状态,那就刀枪不入,"杀人不眨眼"的kill -9 也无能力,因为谁也没有办法杀死一个已经死去的进程。

3.最后,父进程派给子进程的任务完成的如何,我们需要知道。如,子进程运行完成,结果对还是不对,或者是否正常退出。

4.父进程通过进程等待的方式,回收子进程资源,获取子进程退出信息。

三.怎么进行进程调用

1.僵尸进程问题

一个例子


这样子进程就变成了僵尸进程,现在来验证一下wait能否回收。

到目前为止,进程等待是必须的,不然就会进入僵尸进程。当有多个子进程时,wait等待任意一个子进程退出。所以如果有多个子进程又该如何退出呢?

第二个例子

所以如果退出多个子进程需要使用多个wait。如果子进程不退出,父进程默认在wait的时候调用系统调用的时候,也就不返回,默认叫做阻塞状态。

2.waitpid

3.获取进程退出状态

使用wait/waitpid的status参数

一旦子进程退出,操作系统就会将退出信息拷贝到status中,然后就可以将其带出来。接下来令子进程退出码为1,看看status会不会将1带出来。

为什么status会返回256呢?

这是因为status要当成一个位图来看。

由于子进程退出为1,而第8为到15为代表退出状态,所以转化就成了256.

相关推荐
小米里的大麦34 分钟前
025 理解文件系统
linux
青岛佰优联创新科技有限公司1 小时前
移动板房的网络化建设
服务器·人工智能·云计算·智慧城市
打不了嗝 ᥬ᭄1 小时前
Linux 信号
linux·开发语言·c++·算法
禁默1 小时前
进程替换:从 “改头换面” 到程序加载的底层逻辑
linux·运维·服务器
gameatp2 小时前
从 Windows 到 Linux 服务器的全自动部署教程(免密登录 + 压缩 + 上传 + 启动)
linux·服务器·windows
一匹电信狗2 小时前
【C++】异常详解(万字解读)
服务器·c++·算法·leetcode·小程序·stl·visual studio
穷人小水滴2 小时前
在 windows 运行 flatpak 应用 (WSL)
linux·windows·ubuntu
一只拉古2 小时前
DevOps 的 Linux 基础(第一部分)
linux·自动化运维·devops
mit6.8243 小时前
ubuntu远程桌面很卡怎么解决?
linux·ubuntu·php
飞鸟真人3 小时前
linux下用c++11写一个UDP回显程序
linux·udp·即时通信