2013-05-12 255 views
0

我只能说一点英语,所以我希望你能理解我说的话。我如何使用wexitstatus获得超过255的值

我fork了一个子进程,然后我在子进程中做ADD。 EX:56 + 48 = 104

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

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

我该怎么办?

回答

0

如果程序返回的退出代码大于255,程序就是错误的,需要修复。这是违反Unix标准的。如果你不使用标准的Unix,你可能需要从组织的联系人那里获得专家的帮助。

从手册页为等待():

WEXITSTATUS(stat_val)

如果WIFEXITED(stat_val)的值是非零,则该宏计算结果为低位的8位status进程传递给_exit()或exit(),或者子进程从main()返回的值。

它局限于8位,这意味着1个字节,这意味着从WEXITSTATUS整型只能从0-255范围内。事实上,任何 Unix程序将只会返回最大值为255.

此外,许多操作系统/程序保留> 127系统指定的代码,所以你甚至不应该使用任何以上的东西。

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