当前位置: 首页 > 面试题库 >

Linux中是否有任何标准的退出状态代码?

濮阳宁
2023-03-14
问题内容

如果进程的退出状态为0,则认为该进程已在Linux中正确完成。

我已经看到,分段错误通常会导致退出状态为11,尽管我不知道这仅仅是我工作的惯例(失败的应用程序都是内部的)还是标准的。

Linux中是否有用于进程的标准退出代码?


问题答案:

wait(2)&co返回时,将8位返回码和8位终止信号编号混合为一个值。。

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <signal.h>

int main() {
    int status;

    pid_t child = fork();
    if (child <= 0)
        exit(42);
    waitpid(child, &status, 0);
    if (WIFEXITED(status))
        printf("first child exited with %u\n", WEXITSTATUS(status));
    /* prints: "first child exited with 42" */

    child = fork();
    if (child <= 0)
        kill(getpid(), SIGSEGV);
    waitpid(child, &status, 0);
    if (WIFSIGNALED(status))
        printf("second child died with %u\n", WTERMSIG(status));
    /* prints: "second child died with 11" */
}

您如何确定退出状态?传统上,外壳程序仅存储8位返回码,但如果进程异常终止,则将高位设置为高位。

$ sh -c'出口42'; 回声$?
42
$ sh -c'kill -SEGV $$'; 回声$?
分段故障
139
$ expr 139-128
11

如果您看到的不是这个,则程序可能有一个SIGSEGV信号处理程序,该信号处理程序随后exit会正常调用,因此实际上并没有被信号杀死。(程序可以选择处理SIGKILL和以外的任何信号SIGSTOP。)



 类似资料:
  • 问题内容: 我需要从命令行程序中获取退出状态代码。不用担心,我用$?。但是对于ftp,即使它没有连接,它也会打开ftp shell,所以我无法理解连接没有建立。 尝试以下代码以了解: 有什么帮助吗?谢谢菲利波 问题答案: 您应该从ftp命令中查找成功消息,而不是查找状态。这是“ 226传输完成”。您可以在系统上使用ftp手册进行确认。 这是一个示例脚本。

  • 问题内容: 我正在编写一个Java程序,用于从POP3电子邮件中下载附件。最初,我通过获取MimePart的内容类型得到验证的输入流来执行此操作。然后,我可以简单地通过FileOutputStream将输入流写入本地文件。 但是,我遇到的一件事是,当我收到一封带有附件的电子邮件作为唯一内容并访问它之后,该邮件(消息类型)仅由一个部分组成,即文本/普通类型。其内容包括大量随机外观的字符。 通过互联网

  • 我在knpSnappyBundle上有这个错误,我正在尝试生成一个pdf,然后通过电子邮件发送它。 我的配置如下所示: 然后我的控制器: 完全错误消息: 退出状态代码“127”表示出现了问题:stderr:“sh:1:/usr/local/bin/wkhtmltopdf:未找到”stdout:“命令:/usr/local/bin/wkhtmltopdf--lowquality'/tmp/knp_s

  • 当我尝试使用此命令安装mpi4py时 也尝试过, 我总是会遇到这样的错误:

  • ...there are dark corners in the Bourne shell, and people use all of them. Chet Ramey exit 命令一般用于结束一个脚本,就像C语言的exit一样。它也能返回一个值给父进程。 每一个命令都能返回一个退出状态(有时也看做 返回状态 ).一个命令执行成功返回0,一个执行不成功的命令则返回一个非零值,此值通常可以被解释

  • 这是我在执行代码时收到的错误: 文件“/usr/local/lib/python2.7/dist packages/selenium/webdriver/chrome/webdriver.py”,第73行,在init self中。服务start()文件“/usr/local/lib/python2.7/dist packages/selenium/webdriver/common/service.