当前位置: 首页 > 面试题库 >

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

郑理
2023-03-14
问题内容

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

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

我的代码:

int main(void)
{
     return 1000;
}

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


问题答案:

这里有两个相关的概念: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脚本中捕获它。



 类似资料:
  • 问题内容: 我有一个箭头函数,看起来像这样(简化): 但是当我调用它时,我得到: 为什么? 例: ( 注意: 对于上述带有箭头功能的 特定 问题,这是一个干净,规范的重复目标。) 问题答案: 当您使用箭头函数的函数主体版本(带有)时,没有暗示。您必须指定它。当您使用 简洁 主体(no )时,主体表达式的结果将由函数隐式返回。 因此,您可以使用显式的方式编写该代码: 或简洁的主体: 例子: 略 切线

  • 这里,当我返回一个箭头函数insted时,它不起作用: 我知道箭头函数是松散的,这就是为什么我在这里尝试在括号中返回它。没有他们也不行。

  • 我正在等待(从USSD请求中)检索一个值,以便返回它(getUSSD):

  • 问题内容: 我的代码: 当我尝试运行这样的东西时: 我越来越: 但为什么? 我的主要目标是将令牌(从令牌中返回承诺)转换为变量。然后才执行一些操作。 问题答案: 只要其结果尚未解决,promise将始终记录未决。无论promise状态如何(已解决或仍处于待处理状态),您都必须调用promise来捕获结果: 这是为什么? 承诺只是向前的方向;您只能解决一次。a的解析值传递给其或方法。 根据Promi

  • 问题内容: 在哪里返回。这不会编译…我 几乎 可以理解为什么。但是,如果我想从一个空白中返回一个空白,为什么不呢?相反,我最终写了这样的东西: 我不是在寻找代码样式建议,我想知道为什么Java明确禁止这种类型的void返回。任何信息表示赞赏,谢谢。 问题答案: 带有表达式的return语句返回该表达式的值。的类型的是空隙表达-它不 具有 一个值。 从逻辑上讲,您想执行,然后返回-所以您必须说。这两

  • 问题内容: 我有一个自称的函数: 现在,如果我只输入,则一切正常: 但是,如果我输入其他内容,然后输入 ,则会得到以下信息: 我不知道为什么要回来,因为它应该只回来。这None是哪里来的,我该如何修复我的功能? 问题答案: 之所以返回,是None因为当你递归调用它时: ..你不返回该值。 因此,当确实发生递归时,返回值将被丢弃,然后你就无法使用该函数了。退出函数的末尾意味着隐式返回None,就像这