0
点赞
收藏
分享

微信扫一扫

【Linux】进程等待2.0,如何获取子进程的status

程序员阿狸 2022-02-18 阅读 69

文章目录


前面一节简单的学习了进程等待的两种方法 进程控制——进程等待,今天的目标如下


①wait方法


②waitpid方法

  • status
  • options

③获取子进程status

1.理解

waitwaitpid都有一个status参数,该参数是一个输出型参数,由操系统填充

  • 如果传递NULL,表示不关心进程的退出状态信息
  • 如果不是,操作系统会根据该参数,将子进程退出的信息反馈给父进程

但是status不能当作简单的整形看待,可以当作位图来看待,如图(我们只研究status的低16比特位)
在这里插入图片描述

通过wait接口获取的子进程退出的返回值,返回值只使用了一个字节进行保存,并且在返回的时候,并没有存储在status的低位

一个进程退出的场景只有两个

因此在获取返回值之前,先通过低七位判断进程是否正常退出

进程怎么直到自己异常了?

2.如何获取正确的返回值

1.首先判断返回值是否有意义,因为异常退出的返回值是没有意义的,就没必要求取返回值

2.在判断返回值有意义后,如何取出低16位中的高8位

因为返回值只用了一个字节保存,因此进程的返回值最好不要大于255

方法一

代码

在这里插入图片描述

结果

在这里插入图片描述

方法二

利用man waitpid查看手册

代码

在这里插入图片描述

结果

在这里插入图片描述
其实上面的两种方法原理是一样的,都是通过位运算,只不过一个是自己实现,一个是别人写好的~
❤希望今天的内容对你有帮助,感谢观看❤

举报

相关推荐

0 条评论