进程退出状态码3的含义是什么?

24

我曾在几个Python脚本中看到了退出状态码3的使用,用于重新启动进程。据我所知,在Unix/Linux系统中,惯例只涉及到0和"非0"。

是否有其他定义3等值的惯例?


@daemon:如果有一个惯例,它仍然不能回答“在这种情况下3代表什么?”的问题。惯例不是法律。而且你正在使用的特定脚本可能无法遵守惯例。 - S.Lott
3
@S.Lott - 我认为他在问的是,“我知道0代表没有错误,非零表示有错误,但是在Python/Linux/Unix世界里是否存在一些规定,赋予数字3特殊的含义?” - J. Polfer
@sheepsimulator:我的意思是,即使有一个约定,那个信息也没有什么用。我认为真正的问题是,“在这种情况下,3代表什么?” - S.Lott
4个回答

11

至少在旧日子里,返回值为1通常表示硬错误,而值为2通常保留用于处理命令行参数的问题——它意味着用户犯了一个错误,而不是程序。但除此之外,没有任何约定;甚至这个微小的约定也不是普遍适用的。就像一些版本的ps(1)允许您省略命令行参数前面的破折号一样,返回代码只是一种约定。一般来说,阅读运行脚本的文档(或源代码!),然后编写检查特定含义的错误码的代码。


4

对于非零值,没有惯例,它们通常用于传达终止原因,并且每个应用程序定义错误代码和原因的映射。在您链接到的情况下,您可以清楚地看到,在检查退出代码3之前的几行中,它被用于指示代码已更改。

也就是说,在这种情况下,只要终止的原因是代码更改而不是其他原因,自动重启行为就会发生。


1

0

BSD曾试图标准化退出代码,但似乎并没有(还没有?)普及开来:

sysexits3


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接