Mik*_*keD 11 windows standards
是否有标准的应用程序返回代码集?比如返回0表示成功1表示失败,然后等等?
我有一个Windows Server应用程序,我正在添加一些返回错误代码,并希望坚持标准代码,除了我将需要的应用程序特定的代码.
Dou*_*der 16
我认为唯一的标准是0表示成功,非零表示失败.这更像是一种惯例,而不是一种标准.
也许你可以采用一些Unix约定.
在另一个答案中,用户大卫建议
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 */
Run Code Online (Sandbox Code Playgroud)
在文件内部/usr/include/sysexits.h
可以找到这些错误代码的更详细描述.
唯一真正的约定是这0
意味着成功,非零值(通常1
)意味着失败。有关这方面的官方参考,例如,请参阅 Microsoft 的 C++ 文档exit
:
通常,调用者将该
status
值设置为 0 以指示正常退出,或设置为某个其他值以指示错误。
或者 C# docs on Envrionment.Exit
and Environment.ExitCode
which different states:
使用 0(零)表示该过程成功完成。
和
默认值为 0(零),表示该过程成功完成。
和
使用非零数字表示错误。在您的应用程序中,您可以在枚举中定义自己的错误代码,并根据场景返回相应的错误代码。例如,返回值 1 表示所需文件不存在,返回值 2 表示文件格式错误。有关 Windows 操作系统使用的退出代码列表,请参阅Windows 文档中的系统错误代码。
与其他一些回答者不同,我强烈建议不要使用系统错误代码作为应用程序退出代码。关于系统错误代码的一些注意事项:
dir
,dotnet
或塔伊夫。应用程序不应该遵循标准的退出代码集。
但是,您提到过一些成功的常见问题,例如0。根据所使用的操作系统和工具,您可以查看类似应用程序的退出代码并进行模仿。
退出代码远非标准,更多地用于让开发人员了解应用程序返回时发生的相应错误。0 表示成功,非零表示失败的标准是总体趋势,之所以使用它,是因为它允许您对所有可能的错误使用完整的非零范围。
如果您的应用程序正确记录错误,则可能完全不需要跟踪退出代码。
归档时间: |
|
查看次数: |
12539 次 |
最近记录: |