我正在努力使我的代码与Linux系统上的其他子系统配合良好,并且我希望使用对shell有意义的退出代码。你知道吗
在我开始的特定情况下,当尝试写入不存在的目录时,我发现两个候选代码:
#define EX_CANTCREAT 73 /* can't create (user) output file */
在sysexits.h
和(有效地):
errno.ENOENT = 2 # No such file or directory
在Python的errno
模块中。你知道吗
一个比另一个更适合系统出口()? 你知道吗
我注意到Python提供了errno
,并且有一个对应的errno.h
,但是我没有看到任何Pythonic为sysexits.h
预先构建的东西。。。你知道吗
编辑:我试图确定是否应该使用更具体的退出代码,如果是,从哪一组预定义的代码中。下面的答案给出了一个非常明确的“否”:坚持0表示成功,坚持1表示失败作为退出代码。对stderr消息使用errno代码,并且,至少对于Linux,请远离sysexits.h。。。我想。你知道吗
作为一个规则(特别是UNIX设置的先例),程序只使用几个退出代码:} if no matches were found );一个用于任何错误。“任何错误”的代码通常是最高的。有些程序对某些错误使用特殊代码,但这些代码很少。你知道吗
0
表示成功;可选地,一个用于另一个不是错误的有效结果(例如for ^{(许多退出代码(in UNIX, 128+,在Windows中,a few NTSTATUS values that look like large negative numbers)在操作系统终止进程时使用,因此在程序中生成它们是没有用的,以避免混淆。)
任何有关错误is supposed to be printed on ^{} 的详细信息。你知道吗
sysexits.h
似乎对BSD和OSX(源自BSD)和is not a part of the POSIX standard有特异性。你知道吗“catch all”错误退出代码的动机是,如果没有额外的信息,接收进程无论如何也无法对错误进行任何智能处理。
stderr
是传递此类信息的更好方法。你知道吗相关问题 更多 >
编程相关推荐