WEXITSTATUS(状态)返回什么?

问题描述 投票:23回答:1

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

这是片段:

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

如何计算WEXITSTATUS的回报值?

c unix signals posix fork
1个回答
18
投票

WEXITSTATUS(stat_val)是一个宏(所以实际上它并没有“返回”某些东西,而是“评估”某种东西)。

有关它的工作原理,您可能希望在您使用的C编译器附带的标题(应该是#included,通过<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?)背后的动机只有代码的作者和希望存在的文档才知道。

© www.soinside.com 2019 - 2024. All rights reserved.