`

(转)Linux进程被信号杀死后退出状态码(exit code)的分析

 
阅读更多

linux系统下,进程对信号的默认响应方式有5种:

 

1)  忽略信号,即当做没收到信号一样;

 

2)  终止进程;

 

3)  产生核心转储文件,同时进程终止;

 

4)  停止进程,即暂停进程的执行;

 

5)  于之前的暂停之后恢复执行;

 

处理方式2和3都会导致进程终止执行并立即退出,处理方式1、4、5不会造成进程终止执行。因此,可以将信号粗略的分为两类,一类是会导致进程终止并退出的信号;另一类则是不会导致进程终止并退出的信号。

 

 

 

当进程因收到信号被终止执行退出后,父进程可以通过调用wait或waitpid得到它的exit code。进程被各信号终止的退出状态码总结如下:

 

信号编号

 

信号名称

 

信号描述

 

默认处理方式

 

Exit code

 

1

 

SIGHUP

 

挂起

 

终止

 

1

 

2

 

SIGINT

 

终端中断

 

终止

 

2

 

3

 

SIGQUIT

 

终端退出

 

终止、core dump

 

131

 

4

 

SIGILL

 

非法指令

 

终止、core dump

 

132

 

5

 

SIGTRAP

 

跟踪/断点陷阱

 

终止、core dump

 

133

 

6

 

SIGABRT

 

终止进程

 

终止、core dump

 

134

 

7

 

SIGBUS

 

Bus error

 

终止、core dump

 

135

 

8

 

SIGFPE

 

算术异常

 

终止、core dump

 

136

 

9

 

SIGKILL

 

杀死进程(必杀)

 

终止

 

9

 

10

 

SIGUSR1

 

用户自定义信号1

 

终止

 

10

 

11

 

SIGSEGV

 

段错误

 

终止、core dump

 

139

 

12

 

SIGUSR2

 

用户自定义信号2

 

终止

 

12

 

13

 

SIGPIPE

 

管道断开

 

终止

 

13

 

14

 

SIGALRM

 

定时器信号

 

终止

 

14

 

15

 

SIGTERM

 

终止进程

 

终止

 

15

 

16

 

SIGSTKFLT

 

栈错误

 

终止

 

16

 

17

 

SIGCHLD

 

子进程退出

 

忽略

 

 

18

 

SIGCONT

 

继续执行

 

若停止则继续执行

 

 

19

 

SIGSTOP

 

停止执行(必停)

 

暂停执行

 

 

20

 

SIGTSTP

 

停止

 

暂停执行

 

 

21

 

SIGTTIN

 

Stopped (tty input)

 

暂停执行

 

 

22

 

SIGTTOU

 

Stopped (tty out put)

 

暂停执行

 

 

23

 

SIGURG

 

io紧急数据

 

忽略

 

 

24

 

SIGXCPU

 

突破对cpu时间的限制

 

终止、core dump

 

152

 

25

 

SIGXFSZ

 

突破对文件大小的限制

 

终止、core dump

 

153

 

26

 

SIGVTALRM

 

虚拟定时器超时

 

终止

 

26

 

27

 

SIGPROF

 

性能分析定时器超时

 

终止

 

27

 

28

 

SIGWINCH

 

终端窗口尺寸发生变化

 

忽略

 

 

29

 

SIGIO

 

io时可能产生

 

终止

 

29

 

30

 

SIGPWR

 

电量行将耗尽

 

终止

 

30

 

31

 

SIGSYS

 

错误的系统调用

 

终止、core dump

 

159

 

34~64

 

SIGRTMIN~

 

SIGRTMAX

 

实时信号

 

终止

 

34~64

 

 

 

进一步总结如下:

 

1.    能使进程被终止执行并产生core dump的信号,它的退出状态码是信号编号+128,比如SIGQUIT信号,它的编号为3,进程收到该信号后会core dump,退出状态码为3+128=131;

 

2.    只是使进程被终止,而不会产生core dump的信号,它的退出状态码就是信号本身的编号。

————————————————

版权声明:本文为CSDN博主「halfclear」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/halfclear/java/article/details/72783900

分享到:
评论

相关推荐

    进程退出控制exit

    `exit`、`_exit`和函数返回(`return`)是三种常见的进程退出方式,它们之间存在一些微妙的区别。接下来,我们将深入探讨这三个方法的细节。 1. **exit()函数**: `exit()`是C标准库中的一个函数,定义在`stdlib.h...

    signal-exit, 当你想激发一个事件无论进程如何退出.zip

    signal-exit, 当你想激发一个事件无论进程如何退出 信号退出 无论进程如何退出,都要激发事件:到达执行结束。显式地调用 process.exit(code) 。叫 process.kill(pid, sig) 。接收来自进程外部的致命信号使用 signal

    linux waitpid检测子进程是否退出

    退出状态码是一个整数,0表示正常退出,非零值表示异常退出。父进程可以通过`status`参数获取这个信息,判断子进程的退出情况。 `waitpid()`的一个重要特性是它可以阻塞,直到指定的子进程退出,或者使用`options`...

    Linux下生成进程换出进程杀死进程例子

    Linux下生成进程换出进程杀死进程例子 函数fork,exec族函数,exit函数例子

    检测子进程退出的方法

    当子进程退出时,操作系统可能会向父进程发送一个SIGCHLD信号,通知它子进程的状态发生了变化。但默认情况下,收到SIGCHLD信号并不会自动导致父进程做任何处理,需要父进程自己捕获并处理这个信号。 **waitpid函数*...

    win32多线程程序 EXITCODE

    当一个进程或线程结束时,它会返回一个`EXITCODE`,这个代码可以被父进程或者系统用来判断进程或线程的运行情况。默认情况下,成功执行的进程返回`EXITCODE`为0,而任何非零值通常表示某种错误或异常。 创建`Win32`...

    Linux多进程通信-信号量,共享内存示例

    例如,使用`pthread_atfork`确保子进程继承了正确的信号量状态,以及在异常退出时使用`on_exit`或`atexit`注册清理函数。 通过理解这个示例,开发者可以掌握Linux下多进程通信的基本技巧,并能够应用于更复杂的应用...

    Linux进程退出之方法论.docx

    1. `exit()`与`return`:`exit()`是一个函数,它接收一个状态码作为参数,执行后将控制权交给系统。而`return`是函数执行完毕后的返回,将控制权交还给调用它的函数。`return`通常用于局部函数,`exit()`适用于整个...

    Linux进程退出之方法论_1.docx

    - 调用`exit()`函数:`exit()`是C标准库提供的函数,接受一个退出状态码作为参数,执行完所有标准I/O流的缓冲区清理工作后,将控制权交还给操作系统。 - 调用`_exit()`函数:`_exit()`是更低级别的系统调用,不...

    linux进程管理实验

    * wait() 函数:用于等待子进程结束,返回子进程的退出状态。 * exit() 函数:用于终止进程的执行,返回一个状态值。 * kill() 函数:用于发送信号给指定的进程,例如终止进程或发送信号。 * signal() 函数:用于...

    监听进程是否已退出

    ' 使用WaitForSingleObject监听进程退出 Dim exitCode As Integer If WaitForSingleObject(hProcess, INFINITE) = WAIT_OBJECT_0 Then ' 获取退出代码 GetExitCodeProcess hProcess, exitCode If exitCode = 0...

    L5 Linux进程管理1

    state 表示进程的可运行性,而 exit_state 表示进程退出时候的状态。Linux 进程状态可以分为以下几种: * TASK_RUNNING:正在运行的进程,即系统的当前进程或准备运行的进程,即在 Running 队列中的进程。 * TASK_...

    Linux进程基本管理与进程控制

    Linux 进程基本管理与进程控制 Linux 进程基本管理是计算机操作系统中一个非常重要的概念,它涉及到进程的创建、管理和控制。在 Linux 环境下,进程是操作系统中一个基本的执行单元,每个进程都有其自己的虚拟地址...

    java was started but returned exit code

    java was started but returned exit code=1; 关于Android最新的SDK下载解压后出现java was started but returned exit code=1;时的解决方法,我在网上参考相关文献后得出的,希望对你有用!

    04_linux进程专题讲座v1.0.1-王保明.rar

    孤儿进程(其父进程已退出)会被init进程收养。守护进程(daemon)通常在后台运行,不与终端关联,用于提供持续服务。 7. **进程同步与互斥**:在多进程环境下,同步操作防止数据竞争,如信号量、互斥锁和条件变量...

    git did not exit cleanly (exit code 1) .md

    使用TortouieGit拉取代码的时候报git did not exit cleanly (exit code 1)的解决步骤

    python 判断linux进程,并杀死进程的实现方法

    在Python中,`os.system`函数用于执行shell命令,并返回命令的退出状态码。如果命令执行成功,返回值通常为0。 ```python import os pid = get_process_id("python socialbanklog.py") if not pid: print("no ...

    Linux 进程控制与进程互斥(附源代码)(附实验报告)

    分析多进程时系统的运行状态和输出结果; 3、利用最常用的三个函数pthread_create,pthread_join和pthread_exit编写了一个最简单的多线程程序。理解多线程的运行和输出情况; 4、利用信号量机制控制多线程的运行顺序...

Global site tag (gtag.js) - Google Analytics