0

我在 unix 的系统函数的实现中阅读了这段代码(问题 8.22):

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

我不明白这里的 if 条件是什么:WEXITSTATUS 返回的状态与等待中的状态不一样吗?如果不是,那么两者有什么区别?

4

1 回答 1

1

status值是一种复合值,包括进程“退出状态”和其他位。从 Linux 手册页关于WEXITSTATUS

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

于 2014-08-24T01:34:30.217 回答