代码之家  ›  专栏  ›  技术社区  ›  teaLeef

wait函数和wexitstatus中的状态值

  •  0
  • teaLeef  · 技术社区  · 10 年前

    我读过这个 code 在unix系统功能的实现中(问题8.22):

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

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

    1 回复  |  直到 10 年前
        1
  •  1
  •   John Zwinck    10 年前

    这个 status value是一种复合值,包括进程“退出状态”和其他位。从Linux手册页了解 WEXITSTATUS :

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