我在unix的系统函数(问题8.22)的实现中读到了这个code:
int status;
if (wait(&status) > 0) {
if (WIFEXITED(status)) {
return WEXITSTATUS(status);
} else {
return status;
}
}
我不明白这里的if条件是什么:WEXITSTATUS返回的状态是否与等待中的状态相同?如果没有,那么两者之间有什么区别?
答案 0 :(得分:1)
status
值是一种复合值,包括进程"退出状态"加上其他比特。在关于WEXITSTATUS
的Linux手册页中:
如果WIFEXITED(stat_val)的值不为零,则此宏将进行计算 子进程的状态参数的低位8位 传递给_exit()或exit(),或子进程返回的值 来自main()。