有没有以一组标准的应用程序的返回码这样的东西? 比如像等成功返回1 0失败,然后?
我有我加入了一些返回错误代码,并希望坚持的标准代码中除了我需要的应用程序特定的人一个Windows Server应用程序。
有没有以一组标准的应用程序的返回码这样的东西? 比如像等成功返回1 0失败,然后?
我有我加入了一些返回错误代码,并希望坚持的标准代码中除了我需要的应用程序特定的人一个Windows Server应用程序。
有作为一组标准的应用程序应遵循的退出代码没有这样的事。
不过,也有像0一些常见的成功,你提到的。 根据您所使用的操作系统和工具,你可以看看退出代码为类似的应用程序,并模仿他们。
我认为唯一的标准是0成功和非零失败。 而这超过标准的公约。
也许你可以采取一些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
一个可以找到这些错误代码的更详细的描述。
标准状态代码是EXIT_SUCCESS
和EXIT_FAILURE
,在定义stdlib.h
。 几乎每个人都只是用0和1分别,虽然。 有些软件会使用不同的非零代码为不同类型的错误。
退出代码是远远标准,以及更习惯为开发者知道,在应用程序的收益已经出现相应的错误。 0成功的标准,失败非零已是大势所趋,而作为它可以让你使用完整的非零范围为所有可能的错误。
如果您的应用程序适当地记录错误,退出代码将可能是完全没有必要的跟踪。
唯一的真正惯例是0
表示成功,非零值(通常为1
)平均故障。 有关此的官方参考,请参阅,例如,微软的C ++文档exit
:
典型地,该呼叫者的设定
status
值为0以指示正常退出,或为其他值,以指示一个错误。
或C#的文档Envrionment.Exit
和Environment.ExitCode
其不同的状态:
使用0(零),以表明该过程已成功完成。
和
缺省值是0(零),这表明该过程成功完成。
和
使用非零数字指示错误。 在您的应用程序,你可以在一个枚举定义自己的错误代码,并返回基于场景相应的错误代码。 例如,返回值1,以指示所需的文件不存在,并且为2的值,以指示该文件是在错误的格式。 对于由Windows操作系统使用的退出代码列表,请参阅系统错误代码在Windows文档。
不像一些其他的应答者 ,我强烈建议不要使用系统错误代码的应用程序退出代码。 有关系统错误代码的一些注意事项:
dir
, dotnet
,或塔伊夫 。 这里绝对是针对Windows定义的标准错误代码。
很久很久以前,我们使用负误差为特定的“自定义”的错误,但我怀疑,这是很好的做法。
系统错误代码(视窗)
实现你会使用什么。 还有什么是多余的。