为什么我的 shell 只检测到 0 - 255 之间的 return 代码?
Why is my shell only detecting return codes between 0 - 255?
采用以下 C++ 程序:
#include <cstdlib>
int main(){exit(-1);}
当我在 zsh
、bash
或 sh
中 运行 这个程序时,我得到以下结果:
$ ./test
$ echo $?
255
$
如果我运行:
#include <cstdlib>
int main(){exit(256);}
它产生以下内容:
$ ./test
$ echo $?
0
$
shell 解释 0 - 255 之间的 return 代码是否正常?
是否可以产生超出此范围的值?
C++ 允许您 return 来自 main
的两个值:EXIT_SUCCESS
和 EXIT_FAILURE
。返回 EXIT_SUCCESS
与 returning 0
相同,与调用 std::exit(0)
.
具有相同的效果
return 值以实现定义的方式传回操作系统,OS 对该值的作用也是实现定义的。最后,returning 来自 main
的任何其他值的语义也是实现定义的。
C++ 在这个问题上无话可说。您需要查阅您平台的文档。
采用以下 C++ 程序:
#include <cstdlib>
int main(){exit(-1);}
当我在 zsh
、bash
或 sh
中 运行 这个程序时,我得到以下结果:
$ ./test
$ echo $?
255
$
如果我运行:
#include <cstdlib>
int main(){exit(256);}
它产生以下内容:
$ ./test
$ echo $?
0
$
shell 解释 0 - 255 之间的 return 代码是否正常?
是否可以产生超出此范围的值?
C++ 允许您 return 来自 main
的两个值:EXIT_SUCCESS
和 EXIT_FAILURE
。返回 EXIT_SUCCESS
与 returning 0
相同,与调用 std::exit(0)
.
return 值以实现定义的方式传回操作系统,OS 对该值的作用也是实现定义的。最后,returning 来自 main
的任何其他值的语义也是实现定义的。
C++ 在这个问题上无话可说。您需要查阅您平台的文档。