Linux,C ++,负退出代码,澄清?

3
在Linux中,C++可以返回退出代码吗?也就是说,以下代码是否有效:
int main()
{
  return -1;
}

如果这段代码是在bash/zsh中编译和执行的,返回值将是255。我认为这是因为它使用的是8位返回码,这意味着返回码只允许介于正数之间。这样说对吗?

4
交叉重复:https://unix.stackexchange.com/questions/37915/why-do-i-get-error-255-when-returning-1为什么返回1时我会得到错误255? - πάντα ῥεῖ
1
是的,Shell 只能使用 0 到 255 作为返回代码值。 - 0x0C4
2个回答

4
相关的系统调用是_exit(),并且POSIX本身规定通常只能使用_exit()给出的状态的最低8位:

_exit(status)
状态值可以为0EXIT_SUCCESSEXIT_FAILURE或任何其他值,但是只有最低有效的8位(即status & 0377)可以从wait()waitpid()获取;

尽管它继续说"完整的值应该可以从waitid()中获得",但在Linux上,我似乎仍然只能得到低8位。


0

不,传递给exit(2)的退出代码与通过发送信号中断程序的情况下的数据合并。 exit(2)返回的代码仅是由wait(2)返回的代码的最低有效字节。请参阅wait(2)exit(2)页面,了解返回代码的形成方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接