Linux:利用wait()函数得出子进程的退出状态

在上一篇博客中提到进程等待时,用到了两个函数wait()函数和waitpid()函数;在这两个函数中都有这样一个整型参数status,这个参数的作用就是:获取子进程退出状态

那么如何利用这个参数来得出子进程的退出状态?
首先,先来了解一下这个参数的结构:
这个参数是一个整形参数,在获取出子进程退出状态时,只需要用到前16个比特位;
在这里插入图片描述
通过上面这张图片可以知道:

  • 参数status的低7位是用来表示被等待进程是正常退出还是异常退出(正常退出时低7位为全0,异常退出时低7位表示收到的中止信号);
  • 参数status的低16位中的高8位用来表示被等待进程的退出码

在Linux下,有两个宏,可以帮助我们分析子进程的退出状态:

WIFEXITED(status) :指出子进程是否为正常退出的。如果是正常退出,它会返回一个非零值;
WEXITSTATUS(status) :指出子进程退出时的退出状态。当WIFEXITED为非零的情况下,返回子进程的退出状态;当WIFEXITED(status)为0时,WEXITSTATUS(status)没有意义;

所以通过参数status可以得出子进程退出的详细信息;

举个例子

#include<stdio.h>
#include<sys/types.h>
#
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值