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.

相关推荐
lllsure4 分钟前
SpringCloud——负载均衡
服务器·网络·spring cloud
用户8671324957414 分钟前
5 个开源 MCP 服务器,让您的 AI 代理势不可挡
服务器
陈大大陈22 分钟前
基于 C++ 的用户认证系统开发:从注册登录到Redis 缓存优化
java·linux·开发语言·数据结构·c++·算法·缓存
masx20038 分钟前
升级uptime-kuma版本2.0.0-beta.2的cloudflared版本到2025.4.0
运维·后端
maotou52640 分钟前
Ubuntu22学习记录
linux·ubuntu
杨凯凡42 分钟前
Linux安全防护:全方位服务安全配置指南
linux·运维·服务器·安全
李菠菜44 分钟前
CentOS系统中重置Root用户密码的完整步骤详解
linux·运维
Nightwish51 小时前
Linux随记(十七)
linux·运维·服务器
ghostmen1 小时前
Centos 实现 MySql 8.0.40 主从配置
linux·mysql·mysql主从
付出不多1 小时前
Linux——系统安全及应用
linux·运维·系统安全