WEXITSTATUS(状态)返回什么?

我正在试图了解WEXITSTATUS(status)是如何工作的。 我遇到了一段代码,其中WEXITSTATUS(status)的返回值被添加到variables中。

这里是片段:

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

如何计算WEXITSTATUS的返回值?

WEXITSTATUS()是一个宏。

对于它是如何工作的,你可能会喜欢在C编译器附带的头文件中查找它。

从一个C编译器到另一个C编译器的实现可能不同。

waitpid()的POSIX规范中的逐字:

如果WIFEXITED(stat_val)的值不为零,则此宏评估为子进程传递给_exit()或exit()的状态参数的低8位,或者子进程从main ()。


只有代码的作者和希望存在的文档才知道添加特定程序的返回码(s?)的动机。

WEXITSTATUS()是一个提取并返回孩子退出状态的宏。

 #include <sys/wait.h> int statval, exstat; pid_t pid; pid = wait(&statval); exstat = WEXITSTATUS(statval); 

以上是什么是回报的例子。