【发布时间】:2023-03-25 01:25:01
【问题描述】:
我想了解WEXITSTATUS(status) 的工作原理。我遇到了一段代码,其中WEXITSTATUS(status) 的返回值被添加到变量中。
这里是sn-p:
waitpid(-1, &status, 0);
counter += WEXITSTATUS(status);
WEXITSTATUS的返回值如何计算?
【问题讨论】:
-
如果所有命令都成功,那么
counter中的值将为零;如果任何命令以失败(非零)状态退出,counter中的值将非零。如果您运行的命令太多以至于遇到溢出问题,那么即使几乎一切都失败了,您也可能会巧合地得到 0,但这种可能性很小。请注意,如果命令因信号 (WIFSIGNALED) 而死,则 WEXITSTATUS 将为零,但命令仍然失败。 -
对。我理解那部分。我真的很想知道根据接收到的信号将状态值设置为什么。 WIFSIGNALED、WIFSTOPPED 等是否将状态设置为整数值?我们怎么知道这个值是什么?
-
宏evaluate
status,包含进程的退出代码。如果进程 12345 调用exit(7)而你waitpid(12345, &status, 0)那么WEXISTATUS(status)将产生7。