wait函数和wexitstatus中的状态值

时间:2014-08-23 22:39:17

标签: c process wait status wexitstatus

我在unix的系统函数(问题8.22)的实现中读到了这个code

        int status;
        if (wait(&status) > 0) {
             if (WIFEXITED(status)) {
                 return WEXITSTATUS(status);
             } else {
                 return status;
             }
        }

我不明白这里的if条件是什么:WEXITSTATUS返回的状态是否与等待中的状态相同?如果没有,那么两者之间有什么区别?

1 个答案:

答案 0 :(得分:1)

status值是一种复合值,包括进程"退出状态"加上其他比特。在关于WEXITSTATUS的Linux手册页中:

  

如果WIFEXITED(stat_val)的值不为零,则此宏将进行计算   子进程的状态参数的低位8位   传递给_exit()或exit(),或子进程返回的值   来自main()。