Python退出时出错:是否使用sysexits.h或errno.h代码?

2024-06-26 14:58:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力使我的代码与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。。。我想。你知道吗


Tags: 代码目录linux系统情况shellcan子系统
1条回答
网友
1楼 · 发布于 2024-06-26 14:58:21

作为一个规则(特别是UNIX设置的先例),程序只使用几个退出代码:0表示成功;可选地,一个用于另一个不是错误的有效结果(例如for ^{} if no matches were found);一个用于任何错误。“任何错误”的代码通常是最高的。有些程序对某些错误使用特殊代码,但这些代码很少。你知道吗

(许多退出代码(in UNIX, 128+,在Windows中,a few NTSTATUS values that look like large negative numbers)在操作系统终止进程时使用,因此在程序中生成它们是没有用的,以避免混淆。)

任何有关错误is supposed to be printed on ^{}的详细信息。你知道吗


sysexits.h似乎对BSDOSX(源自BSD)和is not a part of the POSIX standard有特异性。你知道吗


“catch all”错误退出代码的动机是,如果没有额外的信息,接收进程无论如何也无法对错误进行任何智能处理。stderr是传递此类信息的更好方法。你知道吗

相关问题 更多 >