我想了解WEXITSTATUS(status)
的工作原理。我遇到了一段代码,其中WEXITSTATUS(status)
的返回值被添加到变量中。
以下是摘录:
waitpid(-1, &status, 0);
counter += WEXITSTATUS(status);
如何计算WEXITSTATUS
的返回值?
答案 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?)背后的动机仅为代码的作者和希望存在的文档所知。