0

我只会说一点英语,所以我希望你能明白我说的话。

我分叉一个子进程,然后在子进程中添加。例如:56+48=104

如果值低于 255 ,我可以使用“wexitstatus(status)”来得到答案。

但是如果值高于256,那就错了!

我能怎么做?

4

1 回答 1

1

如果程序返回退出代码 > 255,则程序完全错误,需要修复。这违反了 Unix 标准。如果您使用的不是标准 Unix,您可能需要从您的组织联系人中获得专家帮助。

从等待()的手册页:

WEXITSTATUS(stat_val)

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

它仅限于 8 位,即 1 个字节,这意味着 WEXITSTATUS 中的 int 只能在 0-255 范围内。事实上,任何Unix 程序最多只能返回 255。

此外,许多操作系统/程序为系统指定代码保留 > 127,因此您甚至不应该使用任何高于此的代码。

如果您需要的返回码多于 126(因为 0 没有错误),请考虑将其写入 STDOUT 并挂钩。

于 2014-04-17T15:36:40.057 回答