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`和函数返回(`return`)是三种常见的进程退出方式,它们之间存在一些微妙的区别。接下来,我们将深入探讨这三个方法的细节。 1. **exit()函数**: `exit()`是C标准库中的一个函数,定义在`stdlib.h...
signal-exit, 当你想激发一个事件无论进程如何退出 信号退出 无论进程如何退出,都要激发事件:到达执行结束。显式地调用 process.exit(code) 。叫 process.kill(pid, sig) 。接收来自进程外部的致命信号使用 signal
退出状态码是一个整数,0表示正常退出,非零值表示异常退出。父进程可以通过`status`参数获取这个信息,判断子进程的退出情况。 `waitpid()`的一个重要特性是它可以阻塞,直到指定的子进程退出,或者使用`options`...
Linux下生成进程换出进程杀死进程例子 函数fork,exec族函数,exit函数例子
当子进程退出时,操作系统可能会向父进程发送一个SIGCHLD信号,通知它子进程的状态发生了变化。但默认情况下,收到SIGCHLD信号并不会自动导致父进程做任何处理,需要父进程自己捕获并处理这个信号。 **waitpid函数*...
当一个进程或线程结束时,它会返回一个`EXITCODE`,这个代码可以被父进程或者系统用来判断进程或线程的运行情况。默认情况下,成功执行的进程返回`EXITCODE`为0,而任何非零值通常表示某种错误或异常。 创建`Win32`...
例如,使用`pthread_atfork`确保子进程继承了正确的信号量状态,以及在异常退出时使用`on_exit`或`atexit`注册清理函数。 通过理解这个示例,开发者可以掌握Linux下多进程通信的基本技巧,并能够应用于更复杂的应用...
1. `exit()`与`return`:`exit()`是一个函数,它接收一个状态码作为参数,执行后将控制权交给系统。而`return`是函数执行完毕后的返回,将控制权交还给调用它的函数。`return`通常用于局部函数,`exit()`适用于整个...
- 调用`exit()`函数:`exit()`是C标准库提供的函数,接受一个退出状态码作为参数,执行完所有标准I/O流的缓冲区清理工作后,将控制权交还给操作系统。 - 调用`_exit()`函数:`_exit()`是更低级别的系统调用,不...
* wait() 函数:用于等待子进程结束,返回子进程的退出状态。 * exit() 函数:用于终止进程的执行,返回一个状态值。 * kill() 函数:用于发送信号给指定的进程,例如终止进程或发送信号。 * signal() 函数:用于...
' 使用WaitForSingleObject监听进程退出 Dim exitCode As Integer If WaitForSingleObject(hProcess, INFINITE) = WAIT_OBJECT_0 Then ' 获取退出代码 GetExitCodeProcess hProcess, exitCode If exitCode = 0...
state 表示进程的可运行性,而 exit_state 表示进程退出时候的状态。Linux 进程状态可以分为以下几种: * TASK_RUNNING:正在运行的进程,即系统的当前进程或准备运行的进程,即在 Running 队列中的进程。 * TASK_...
Linux 进程基本管理与进程控制 Linux 进程基本管理是计算机操作系统中一个非常重要的概念,它涉及到进程的创建、管理和控制。在 Linux 环境下,进程是操作系统中一个基本的执行单元,每个进程都有其自己的虚拟地址...
java was started but returned exit code=1; 关于Android最新的SDK下载解压后出现java was started but returned exit code=1;时的解决方法,我在网上参考相关文献后得出的,希望对你有用!
孤儿进程(其父进程已退出)会被init进程收养。守护进程(daemon)通常在后台运行,不与终端关联,用于提供持续服务。 7. **进程同步与互斥**:在多进程环境下,同步操作防止数据竞争,如信号量、互斥锁和条件变量...
使用TortouieGit拉取代码的时候报git did not exit cleanly (exit code 1)的解决步骤
在Python中,`os.system`函数用于执行shell命令,并返回命令的退出状态码。如果命令执行成功,返回值通常为0。 ```python import os pid = get_process_id("python socialbanklog.py") if not pid: print("no ...
分析多进程时系统的运行状态和输出结果; 3、利用最常用的三个函数pthread_create,pthread_join和pthread_exit编写了一个最简单的多线程程序。理解多线程的运行和输出情况; 4、利用信号量机制控制多线程的运行顺序...