5

我有一个将执行三个应用程序的 Perl 脚本。所有这些都有不同的退出代码状态。

第一个应用程序退出代码状态为1。应用程序正常退出,没有任何问题。(成功的)

第二个应用程序退出代码状态为 99。仍然,应用程序正常退出,没有任何问题。(成功的)

最后,第三个应用程序退出码状态为0。与第一个和第二个一样,应用程序正常退出,没有任何问题。(成功的)

注意:已经将退出代码状态右移 8 位。

问题是,如果成功运行,退出代码状态是否总是返回 0?

请不要严厉评论,我只是感到困惑。请指教。

4

2 回答 2

8

返回状态由子进程选择。成功操作通常为零,但没有强制执行该约定。

进程还可以返回指示不同形式的成功的信息返回状态。例如,修改目录中所有文件的程序可能会返回一个非零值,表示没有要修改的文件。

您应该检查应用程序的文档以查看是否提到了有关可能返回的值的任何内容。如果您什么也找不到,那么您应该凭经验决定哪些值表明成功。

于 2012-03-23T07:06:08.300 回答
4

大多数操作系统环境建议并支持零作为成功退出代码,以及其他指示某种状态的值:每个程序分别记录普通或异常。

即使是简单的 MSDOS 也为批处理文件提供了很好的支持,以对某个错误级别做出反应做一些不同的事情。

对非零返回状态具有强烈默认反应的一种环境是 VMS/OpenVMS 操作系统系列。如果您的应用程序可能在那里运行,请遵循标准。

于 2012-03-23T07:16:38.507 回答