为什么我不能从主函数返回更大的值?

海岩:

我试图从我的主函数返回一个更大的值,例如1000,但是当我键入echo $?它时显示0。

如果我返回一个较小的值(如100),则会显示正确的值。

我的代码:

int main(void)
{
     return 1000;
}

我们可以返回的值是否有限制?

道格拉斯·里德(Douglas Leeder):

这里有两个相关的概念:C退出状态和bash返回代码。它们都覆盖了0-255的范围,但是bash出于自己的目的使用大于126的数字,因此从程序中返回这些值会造成混乱。

为了安全起见,请将退出状态代码限制为0-127,因为这是最便于移植的方法,至少http://docs.python.org/library/sys.html#sys.exit暗示了这一点

C退出状态被放入bash $?变量执行后,但是bash使用127表示“找不到命令”,因此您可能要避免这种情况。Bash参考页

Bash还使用128-255表示信号-它们表示进程已被信号杀死:exit code = 128 + signal number因此,您可能可以选择使用接近255的数字,因为信号数字不太可能会升至如此之高。

除了这些通用准则之外,还进行了许多尝试来定义不同数字的含义:http : //tldp.org/LDP/abs/html/exitcodes.html

因此,您想从程序中返回任意整数,最好将其打印到stdout,然后VALUE=$(program)从bash脚本中捕获它

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我不能从函数返回Vec <&str>?

为什么我不能从void函数返回void

为什么不能从函数返回打印函数?

为什么我不能从该函数返回通用类型T?

为什么我不能从函数返回显式类型的结果枚举?

为什么我不能从Lambda返回初始值设定项列表

为什么我不能从以下程序中获得最小值(使用函数和数组)

为什么我不能从 Future 返回 None

为什么我不能从闭包中返回引用?

为什么我不能从Yesod的处理程序返回ByteString?

为什么我不能从&'a T返回fmt :: Arguments <'a>?

为什么我不能从异步函数内部“产生”?

为什么我的函数不能从 ngForm 收集用户输入?

为什么我不能从ioctl函数接收SIGPOLL信号?

为什么我的 Javascript 函数不能从 HTML 运行?

为什么我不能从C中的函数传回链表?

为什么我要在一个空数组上调用GetType()但不能从函数返回它时调用

为什么我不能从C#中的Powershell.Invoke()方法返回所有Cimsession函数

有人可以解释为什么我不能从此方法返回值吗?

为什么我的Groovy主类不能从生成的jar中执行?

为什么我不能从我的计算属性访问我的数据函数?

为什么我不能从python中的异常返回我的局部变量?

为什么我不能从类中的调用方法返回字符串?

为什么我不能从方法中显式返回void?

为什么我不能从闭包中返回对外部变量的可变引用?

C#7-为什么我不能从异步方法返回此等待类型?

为什么我不能从 Ionic/Angular 中的模式返回数据?

为什么我不能从某些处理器异常中返回?玩具内核开发

为什么我不能从 Ionic 4 中的 API 服务返回数据?