我想了解WEXITSTATUS(status)
是如何工作的。我遇到了一段代码,其中WEXITSTATUS(status)
的返回值被添加到变量中。
这是片段:
waitpid(-1, &status, 0);
counter += WEXITSTATUS(status);
如何计算WEXITSTATUS
的回报值?
WEXITSTATUS(stat_val)
是一个宏(所以实际上它并没有“返回”某些东西,而是“评估”某种东西)。
有关它的工作原理,您可能希望在您使用的C编译器附带的标题(应该是#include
d,通过<sys/wait.h>
)中查找它。
这个marco的实现可能因C编译器而异。
请注意,如果宏WIFEXITED(stat_val)
给你一个不等于0
的值,这个宏只给出一个合理的值。
来自waitpid()
's POSIX specification的逐字:
WEXITSTATUS(stat_val)
如果WIFEXITED(stat_val)的值不为零,则此宏计算为子进程传递给_exit()或exit()的status参数的低8位,或子进程从main返回的值()。
添加特定程序的返回代码(s?)背后的动机只有代码的作者和希望存在的文档才知道。