什么“标准”应用程序返回/退出代码应的应用程序的支持吗?(What “standard” appli

2019-07-21 13:08发布

有没有以一组标准的应用程序的返回码这样的东西? 比如像等成功返回1 0失败,然后?

我有我加入了一些返回错误代码,并希望坚持的标准代码中除了我需要的应用程序特定的人一个Windows Server应用程序。

Answer 1:

有作为一组标准的应用程序应遵循的退出代码没有这样的事。

不过,也有像0一些常见的成功,你提到的。 根据您所使用的操作系统和工具,你可以看看退出代码为类似的应用程序,并模仿他们。



Answer 2:

我认为唯一的标准是0成功和非零失败。 而这超过标准的公约。



Answer 3:

也许你可以采取一些Unix的公约。

在另一个答案 ,用户David建议

sysexits.h有标准退出代码列表。 这似乎可以追溯到至少1993年,像Postfix的一些大项目中使用它,所以我想这是要走的路。

从OpenBSD的手册页:

根据风格(9),这是不好的做法,调用exit(3)arbi- trary值结束程序时指示故障情况。 在 - 代替,从sysexits预先定义的退出代码应使用,所以这个过程的调用者可以获取关于失败类粗略估计头也不抬的源代码。

这是因为它出现在Debian系统上的名单:

#define EX_USAGE        64      /* command line usage error */
#define EX_DATAERR      65      /* data format error */
#define EX_NOINPUT      66      /* cannot open input */    
#define EX_NOUSER       67      /* addressee unknown */    
#define EX_NOHOST       68      /* host name unknown */
#define EX_UNAVAILABLE  69      /* service unavailable */
#define EX_SOFTWARE     70      /* internal software error */
#define EX_OSERR        71      /* system error (e.g., can't fork) */
#define EX_OSFILE       72      /* critical OS file missing */
#define EX_CANTCREAT    73      /* can't create (user) output file */
#define EX_IOERR        74      /* input/output error */
#define EX_TEMPFAIL     75      /* temp failure; user is invited to retry */
#define EX_PROTOCOL     76      /* remote error in protocol */
#define EX_NOPERM       77      /* permission denied */
#define EX_CONFIG       78      /* configuration error */

里面的文件/usr/include/sysexits.h一个可以找到这些错误代码的更详细的描述。



Answer 4:

标准状态代码是EXIT_SUCCESSEXIT_FAILURE ,在定义stdlib.h 。 几乎每个人都只是用0和1分别,虽然。 有些软件会使用不同的非零代码为不同类型的错误。



Answer 5:

退出代码是远远标准,以及更习惯为开发者知道,在应用程序的收益已经出现相应的错误。 0成功的标准,失败非零已是大势所趋,而作为它可以让你使用完整的非零范围为所有可能的错误。

如果您的应用程序适当地记录错误,退出代码将可能是完全没有必要的跟踪。



Answer 6:

唯一的真正惯例是0表示成功,非零值(通常为1 )平均故障。 有关此的官方参考,请参阅,例如,微软的C ++文档exit

典型地,该呼叫者的设定status值为0以指示正常退出,或为其他值,以指示一个错误。

或C#的文档Envrionment.ExitEnvironment.ExitCode其不同的状态:

使用0(零),以表明该过程已成功完成。

缺省值是0(零),这表明该过程成功完成。

使用非零数字指示错误。 在您的应用程序,你可以在一个枚举定义自己的错误代码,并返回基于场景相应的错误代码。 例如,返回值1,以指示所需的文件不存在,并且为2的值,以指示该文件是在错误的格式。 对于由Windows操作系统使用的退出代码列表,请参阅系统错误代码在Windows文档。

不像一些其他的应答者 ,我强烈建议不要使用系统错误代码的应用程序退出代码。 有关系统错误代码的一些注意事项:

  • 微软不建议使用它们作为应用程序退出代码的任何地方 ,确实明确地建议你上面我引用文档中的“定义自己的错误代码”。
  • 微软不会在自己的应用程序或命令一贯地使用他们作为退出代码。 虽然有使用这些代码的应用程序的示例,如msiexec.exe的 ,有很多更是没有,像dirdotnet ,或塔伊夫 。
  • 使用它们似乎是一个明显坏主意给我。 有数以千计的 系统退出代码 ,其中大部分是无关的任何特定的应用程序是的。 如果您尝试使用它们,你会浪费年龄在列表中选择要找到适用于您的方案的代码,并且比如果你刚刚定义的少数最终的结果将是开发者调用应用程序用处不大那是有意义的特定应用程序的退出代码 - 这样做吧。


Answer 7:

这里绝对是针对Windows定义的标准错误代码。

很久很久以前,我们使用负误差为特定的“自定义”的错误,但我怀疑,这是很好的做法。

系统错误代码(视窗)



Answer 8:

实现你会使用什么。 还有什么是多余的。



文章来源: What “standard” application return/exit codes should an application support?