WEXITSTATUS(状态)返回什么?

sha*_*enk 24 c unix posix fork signals

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

这是片段:

waitpid(-1, &status, 0);
counter += WEXITSTATUS(status);
Run Code Online (Sandbox Code Playgroud)

如何WEXITSTATUS计算返回值?

alk*_*alk 21

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

有关它的工作原理,您可能希望在您使用的C编译器附带的标题(应该是#included via <sys/wait.h>)中查找它.

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

请注意,如果宏WIFEXITED(stat_val)给你一个不等于的值,这个宏只给出一个合理的值0.

来自waitpid()POSIX规范的 Verbatim :

WEXITSTATUS(stat_val)

如果WIFEXITED(stat_val)的值不为零,则此宏计算为子进程传递给_exit()exit()的status参数的低8位,或子进程从main返回的值 ().


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

  • @shaveenk:你是"*......无法运行......*"或无法编译此代码?你得到哪些错误? (2认同)