【问题标题】:Linux,c++, negative exit codes, clarifiction?Linux,C++,负退出代码,澄清?
【发布时间】:2017-05-28 13:14:10
【问题描述】:

在 Linux 中,c++ 可以返回退出代码吗?即此代码是否有效:

int main()
{
  return -1;
}

我问这个代码是否是从 bash/zsh 编译和执行的原因,返回值将是 255,我认为这是因为它使用 8 位返回码,这意味着返回码是只允许在正数之间。

这是正确的吗?

【问题讨论】:

标签: c++ linux bash return zsh


【解决方案1】:

相关的系统调用是_exit(),而POSIX itself specifies只有给_exit()的状态的低8位是正常可用的:

_exit(status)
status 的值可以是0EXIT_SUCCESSEXIT_FAILURE 或任何其他值,尽管从wait()waitpid() 只能获得最低有效8 位(即status & 0377);

虽然它继续说“应从waitid() 获得完整值”,但在 Linux 上,我似乎仍然只得到低八位。

【讨论】:

    【解决方案2】:

    不,传递给exit(2) 的退出代码会与数据合并,以防您的程序被发送给它的信号中断。 exit(2) 返回代码只是wait(2) 返回的代码的最低有效字节。请参阅 wait(2)exit(2) 页面了解返回码是如何形成的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-06
      相关资源
      最近更新 更多