Windows和GNU / Linux中的应用程序的常规返回值分别是什么。 0表示成功。但应该在用户请求的中止使用什么。当我在Windows上中止时,它返回3,但如果它不是ERROR_PATH_NOT_FOUND,则该值不在系统错误代码列表中。 GNU binutils使用1.从用户角度来看,返回GetLastError或errno会很好,因为它们已被记录,但这些似乎只包含较低级别的状态代码。我正在寻找一个代表“应用程序终止失败”的值
我更聪明的原因是我想要
exit(errcode)
来自信号处理程序,该信号处理程序在打印有关其发生位置的消息后捕获一些访问冲突/ SIGSEGV(即编程错误)。然后,错误代码应该是用户输入错误的理想选择。
答案 0 :(得分:3)
这可能会有所帮助,http://tldp.org/LDP/abs/html/exitcodes.html这些是标准的退出代码。我认为其余的都是程序依赖的。基本上你需要验证你正在寻找的特定软件的文档。正如@devnull所说,任何非零的退出代码都意味着终止不成功
答案 1 :(得分:1)
这只是关于退出代码的几个约定。让我们看看一些手册的内容:
GNU C Library参考手册
某些程序应返回哪些状态值的约定。 最常见的约定是0表示成功,1表示失败 ...
一般惯例为特殊目的保留状态值128及以上
- 某些非POSIX系统对退出状态使用不同的约定 值
- 为了获得更好的便携性,您可以使用宏 EXIT_SUCCESS 和 EXIT_FAILURE 对于成功和失败的传统状态值。
醇>
ISO / IEC 9899:2011(C11标准)
如果状态值为零或 EXIT_SUCCESS ,则会返回状态成功终止的实现定义形式。如果状态值为 EXIT_FAILURE ,则会返回状态不成功终止的实现定义形式。否则返回的状态是实现定义的。
这意味着如果你想要(并且对于大多数情况来说足够)只是表明成功或失败,你肯定应该使用 EXIT_SUCCESS 和 EXIT_FAILURE 。如果您想指出其他错误,您应该重新发明自己的退出状态。例如:
#define HEX_FILE_CREATE 2
#define HEX_FILE_CREATE 3
...
关于您应该返回的内容和方式还有其他提示:
- 警告:请勿尝试将错误数用作退出状态。这实际上不是 很有用;父进程通常不关心发生了多少错误。更差 除此之外,它不起作用,因为状态值被截断为8位。因此,如果 该程序试图报告256个错误,父母将收到0个错误的报告 - 那个 是,成功
- 出于同样的原因,使用errno的值作为退出状态 - 这些不起作用 可以超过255
醇>
<强>结论:强>