gpt4 book ai didi

Python 退出时出现错误 : Use sysexits. h 或 errno.h 代码?

转载 作者:太空宇宙 更新时间:2023-11-04 10:05:33 26 4
gpt4 key购买 nike

我正在尝试让我的代码与 Linux 系统上的其他 child 一起玩得很好,我想使用对 shell 有意义的退出代码。

在我开始的特定情况下,当尝试写入一个不存在的目录时,我发现了两个候选代码:

#define EX_CANTCREAT 73  /* can't create (user) output file */

sysexits.h 和(有效地):

errno.ENOENT = 2         # No such file or directory

在 Python 的 errno 模块中。

对于 sys.exit(),一个比另一个更合适吗?

我注意到 Python 提供了 errno 并且有一个相应的 errno.h 但我没有看到任何为 sysexits.h 预构建的 Pythonic >...


编辑: 我试图确定我是否应该使用更具体的退出代码,如果是,从哪一组预定义代码中选择。下面的答案给出了一个非常明确的“否”:坚持使用 0 表示成功,1 表示失败作为退出代码。将 errno 代码用于 stderr 消息,至少对于 Linux,只需远离 sysexits.h...我认为。

最佳答案

作为规则(具体来说,UNIX 设定的先例),程序只使用一些退出代码:0 表示成功;0 表示成功;可选地,一个不是错误的有效结果(例如 for grep -- 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 stderr .


sysexits.h 似乎特定于 BSDOSX (源自 BSD)和 is not a part of the POSIX standard .


“包罗万象”的错误退出代码的动机是,如果没有附加信息,接收进程就无法对错误做任何智能处理。 stderr 是传递此类信息的更好方法。

关于Python 退出时出现错误 : Use sysexits. h 或 errno.h 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52841056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com