1、Linux信 类型
信 (Signal):信 是在软件层次上对中断机制的一种模拟,通过给一个进程发送信 ,执行相应的处理函数。
进程可以通过三种方式来响应一个信 :
1)忽略信 ,即对信 不做任何处理,其中有两个信 不能忽略:SIGKILL及SIGSTOP。
2)捕捉信 。
3)执行缺省操作,Linux对每种信 都规定了默认操作。
Linux究竟采用上述三种方式的哪一个来响应信 呢决于传递给响应的API函数。
Linux支持的信 有:
编 |
信 名称 |
缺省动作 |
描述 |
1 |
SIGHUP |
终止 |
终止进程,挂起 |
2 |
SIGINT |
终止 |
键盘输入中断命令,一般是CTRL+C |
3 |
SIGQUIT |
CoreDump |
键盘输入退出命令,一般是CTRL+ |
4 |
SIGILL |
CoreDump |
非法指令 |
5 |
SIGTRAP |
CoreDump |
trap指令发出,一般调试用 |
6 |
SIGABRT |
CoreDump |
abort(3)发出的终止信 |
7 |
SIGBUS |
CoreDump |
非法地址 |
8 |
SIGFPE |
CoreDump |
浮点数异常 |
9 |
SIGKILL |
终止 |
立即停止进程,不能捕获,不能忽略 |
10 |
SIGUSR1 |
终止 |
用户自定义信 1,像Nginx就支持USR1信 ,用于重载配置,重新打开日志 |
11 |
SIGSEGV |
CoreDump |
无效内存引用 |
12 |
SIGUSR2 |
终止 |
用户自定义信 2 |
13 |
SIGPIPE |
终止 |
管道不能访问 |
14 |
SIGALRM |
终止 |
时钟信 ,alrm(2)发出的终止信 |
15 |
SIGTERM |
终止 |
终止信 ,进程会先关闭正在运行的任务或打开的文件再终止,有时间进程在有运行的任务而忽略此信 。不能捕捉 |
16 |
SIGSTKFLT |
终止 |
处理器栈错误 |
17 |
SIGCHLD |
可忽略 |
子进程结束时,父进程收到的信 |
18 |
SIGCONT |
可忽略 |
让终止的进程继续执行 |
19 |
SIGSTOP |
停止 |
停止进程,不能忽略,不能捕获 |
20 |
SIGSTP |
停止 |
停止进程,一般是CTRL+Z |
21 |
SIGTTIN |
停止 |
后台进程从终端读数据 |
22 |
SIGTTOU |
停止 |
后台进程从终端写数据 |
23 |
SIGURG |
可忽略 |
紧急数组是否到达socket |
24 |
SIGXCPU |
CoreDump |
超出CPU占用资源限制 |
25 |
SIGXFSZ |
CoreDump |
超出文件大小资源限制 |
26 |
SIGVTALRM |
终止 |
虚拟时钟信 ,类似于SIGALRM,但计算的是进程占用的时间 |
27 |
SIGPROF |
终止 |
类似与SIGALRM,但计算的是进程占用CPU的时间 |
28 |
SIGWINCH |
可忽略 |
窗口大小改变发出的信 |
29 |
SIGIO |
终止 |
文件描述符准备就绪,可以输入/输出操作了 |
30 |
SIGPWR |
终止 |
电源失败 |
31 |
SIGSYS |
CoreDump |
非法系统调用 |
CoreDump(核心转储):当程序运行过程中异常退出时,内核把当前程序在内存状况存储在一个core文件中,以便调试。
Linux支持两种信 :
一种是标准信 ,编 1-31,称为非可靠信 (非实时),不支持队列,信 可能会丢失,比如发送多次相同的信 ,进程只能收到一次,如果第一个信 没有处理完,第二个信 将会丢弃。
另一种是扩展信 ,编 32-64,称为可靠信 (实时),支持队列,发多少次进程就可以收到多少次。
信 类型比较多,我们只要了解下,记住几个常用信 就行了,红色标记的我觉得需要记下。
发送信 一般有两种情况:
一种是内核检测到系统事件,比如键盘输入CTRL+C会发送SIGINT信 。
另一种是通过系统调用kill命令来向一个进程发送信 。
2、kill命令
kill命令发送信 给进程。
命令格式:kill [-s sigspec | -n signum | -sigspec] pid | jobspec …
kill -l [sigspec]
-s # 信 名称
-n # 信 编
-l # 打印编 1-31信 名称
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!