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

本文探讨如何使用wait()函数中的status参数获取Linux子进程的退出状态。通过WIFEXITED和WEXITSTATUS宏,可以判断子进程是否正常退出以及其退出码。正常退出时,低7位全0;异常退出时,低7位表示接收到的信号。示例展示了正常和异常退出的情况。
摘要由CSDN通过智能技术生成

在上一篇博客中提到进程等待时,用到了两个函数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>
#include<sys/wait.h>
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值