GNU如何处理主要的故障指示器

时间:2013-09-30 02:36:17

标签: c++ c

我写了一个简单的案例,看看我的系统如何处理来自main的故障指示器。 但什么都没发生。我真的想知道return 0和return -1之间的区别。

int main()
{
    return -1;
}

5 个答案:

答案 0 :(得分:3)

这取决于你的“系统”是什么。如果您只是运行程序,则忽略该值。

唯一一次使用它的方法是,如果您的程序是程序失败的重要工作流程的一部分。例如,如果其中一个步骤出现故障,makefile(或C ++ IDE)将停止构建程序。来自main()的错误代码表示此失败。

答案 1 :(得分:1)

大多数时候,main中的返回值没有用,传统上,我们返回0表示程序成功,特别是在Windows中。但是在Linux中,我们经常有一系列程序,这意味着第二个程序的状态取决于第一个程序的结果。那时,返回值有其位置。

所以,无论返回值是多少,大多数时候它取决于你的设计,对系统来说没有任何意义。

希望能帮到你。

答案 2 :(得分:1)

假设您已经编译了一个名为a.out的可执行文件,请考虑:

$ ./a.out                 # ignore the value returned from main
$ ./a.out && echo success # check the value returned from main
$ ./a.out || echo failure

在第二种和第三种情况下,仅当a.out成功或不成功时才会发生回声,其中成功被定义为从main返回零。这是一种使用以下语法可以更清晰的约定:

if ./a.out; then
  echo a.out returned zero from main
else
  echo a.out returned non-zero from main
fi

答案 3 :(得分:0)

main()的返回值可用:

  1. 对于shell,如果shell启动它,则为$status等,具体取决于您正在使用的shell。

  2. 通过status参数指向的wait()变量,启动它的程序。请参阅man 2 wait()

  3. GNU对它毫无用处。

答案 4 :(得分:0)

如果使用bash shell(或类似),则可以显示使用echo $?执行的最后一个命令的返回值。样本bash终端会话:

$false
$echo $?
1
$true
$echo $?
0
$

在其他系统上,将以不同方式访问返回值。在DOS或Windows上,可以使用ERRORLEVEL命令或%ERRORLEVEL%变量检查返回值。

相关问题