是否存在标准的应用程序返回代码集?比如返回0表示成功1表示失败,然后等等?
我有一个Windows Server应用程序,我正在添加一些返回错误代码,并希望除了我需要的应用程序特定代码之外还要坚持标准代码。
答案 0 :(得分:14)
我认为唯一的标准是0表示成功,非零表示失败。这更像是一种惯例而非标准。
答案 1 :(得分:7)
也许你可以采用一些Unix惯例。
在another answer中,用户David建议
sysexits.h
有一个标准退出代码列表。它似乎可以追溯到至少1993年,一些像Postfix这样的大项目使用它,所以我想它是要走的路。从OpenBSD手册页:
根据样式(9),在结束程序时,使用任意值调用exit(3)来表示失败条件并不是一个好习惯。相反,应该使用来自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
内,可以找到有关这些错误代码的更详细说明。
答案 2 :(得分:6)
标准状态代码为EXIT_SUCCESS
和EXIT_FAILURE
,在stdlib.h
中定义。然而,几乎所有人都分别使用0和1。某些软件会针对不同类型的错误使用不同的非零代码。
答案 3 :(得分:4)
退出代码远非标准,并且更多地用于让开发人员知道在返回应用程序时发生的适当错误。成功的标准为0,失败的非零是一般趋势,因为它允许您对所有可能的错误使用完整的非零范围。
如果您的应用程序正确记录错误,则可能完全没有必要使用退出代码来跟踪。
答案 4 :(得分:3)
没有应用程序应符合的标准退出代码集。
然而,正如你所提到的,有一些常见的例如0表示成功。根据您使用的操作系统和工具,您可以查看类似应用程序的退出代码并模仿它们。
答案 5 :(得分:1)
唯一真正的惯例是0
表示成功,非零值(通常为1
)表示失败。有关此问题的官方参考,请参阅exit
上的Microsoft的C ++文档:
通常,调用者将
status
值设置为0以指示正常退出,或将其设置为其他值以指示错误。
或Envrionment.Exit
和Environment.ExitCode
上的C#文档有不同的说明:
使用0(零)表示该过程已成功完成。
和
默认值为0(零),表示进程已成功完成。
和
使用非零数字表示错误。在应用程序中,您可以在枚举中定义自己的错误代码,并根据方案返回相应的错误代码。例如,返回值1表示所需文件不存在,返回值2表示文件格式错误。有关Windows操作系统使用的退出代码列表,请参阅Windows文档中的System Error Codes。
与some other answerers不同,我强烈建议不要将系统错误代码用作应用程序退出代码。关于系统错误代码的一些注意事项:
dir
,dotnet
或TAEF。答案 6 :(得分:0)
答案 7 :(得分:-2)
实施您将使用的内容。其他任何事情都是多余的。