WEXITSTATUS(状态)返回什么?

时间:2013-12-09 07:07:46

标签: c unix signals posix fork

我想了解WEXITSTATUS(status)的工作原理。我遇到了一段代码,其中WEXITSTATUS(status)的返回值被添加到变量中。

以下是摘录:

waitpid(-1, &status, 0);
counter += WEXITSTATUS(status);

如何计算WEXITSTATUS的返回值?

1 个答案:

答案 0 :(得分:18)

WEXITSTATUS(stat_val)是一个宏(所以事实上它不是“返回”的东西,而是“评估”某些东西)。

有关它的工作原理,您可能希望在您使用的C编译器附带的标题(通过<sys/wait.h>#include d)中查找。

这个marco的实现可能因C编译器而异。

请注意,如果宏WIFEXITED(stat_val)为您提供的值不等于0,则此宏只会提供合理的值。

逐字waitpid()'s POSIX specification

  

WEXITSTATUS( stat_val

     

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


添加特定程序的返回代码(s?)背后的动机仅为代码的作者和希望存在的文档所知。