文章目录
前面一节简单的学习了进程等待的两种方法 进程控制——进程等待,今天的目标如下
①wait方法
②waitpid方法
status
options
③获取子进程status
1.理解
wait
和waitpid
都有一个status参数,该参数是一个输出型参数,由操系统填充
- 如果传递
NULL
,表示不关心进程的退出状态信息 - 如果不是,操作系统会根据该参数,将子进程退出的信息反馈给父进程
但是status
不能当作简单的整形看待,可以当作位图来看待,如图(我们只研究status
的低16比特位)
通过wait
接口获取的子进程退出的返回值,返回值只使用了一个字节进行保存,并且在返回的时候,并没有存储在status
的低位
一个进程退出的场景只有两个
因此在获取返回值之前,先通过低七位判断进程是否正常退出
进程怎么直到自己异常了?
2.如何获取正确的返回值
1.首先判断返回值是否有意义,因为异常退出的返回值是没有意义的,就没必要求取返回值
2.在判断返回值有意义后,如何取出低16位中的高8位
因为返回值只用了一个字节保存,因此进程的返回值最好不要大于255
方法一
代码
结果
方法二
利用man waitpid
查看手册
代码
结果
其实上面的两种方法原理是一样的,都是通过位运算,只不过一个是自己实现,一个是别人写好的~
❤希望今天的内容对你有帮助,感谢观看❤