linux信号
来源:互联网 发布:台湾人逛淘宝的感想 编辑:程序博客网 时间:2024/06/05 03:10
http://book.51cto.com/art/201604/510323.htm
5.3.2 信号(1)
《Linux环境编程图文指南》本书内容翔实,囊括了Linux系统操作细节,Shell脚本编程精要,各种编程环境所需要解决的技术难点,以及在Linux环境下的C语言编程技术、并发编程技术和音/视频编程等核心内容。本节为大家介绍信号。
- 作者:林世霖/钟锦辉/李建辉来源:电子工业出版社|2016-04-28 18:30
- 移动端收藏分享
沙龙活动 | 去哪儿、陌陌、ThoughtWorks在自动化运维中的实践!10.28不见不散!
5.3.2 信号(1)
信号是一种比较特殊的IPC,大部分的信号是异步的。换句话讲,一般情况下,进程什么时候会收到信号、收到什么信号是无法事先预料的(除了某几个特殊的信号之外),信号的到来就像你家门铃响起一样,你不知道它什么时候会响。
先来看看Linux系统中,都有哪些信号,如表5-8所示。
可以看到,Linux系统有许多信号,其中前面31个信号都有一个特殊的名字,对应一个特殊的事件。例如,1号信号SIGHUP(Signal Hang UP),表示每当系统中的一个控制终端被关闭(即挂断,Hang Up)时,即会产生这个信号,有时会将它们称为非实时信号,这些信号都是从UNIX系统继承下来的,它们还有个名称叫"不可靠信号",它们有如下特点。
表5-8 Linux系统的信号
1 SIGHUP
2 SIGINT
3 SIGQUIT
4 SIGILL
5 SIGTRAP
6 SIGABRT
7 SIGBUS
8 SIGFPE
9 SIGKILL
10 SIGUSR1
11 SIGSEGV
12 SIGUSR2
13 SIGPIPE
14 SIGALRM
15 SIGTERM
16 SIGSTKFLT
17 SIGCHLD
18 SIGCONT
19 SIGSTOP
20 SIGTSTP
21 SIGTTIN
22 SIGTTOU
23 SIGURG
24 SIGXCPU
25 SIGXFSZ
26 SGIVTALRM
27 SIGPROF
28 SIGWINCH
29 SIGIO
30 SIGPWR
31 SIGSYS
34 SIGRTMIN
35 SIGRTMIN+1
36 SIGRTMIN+2
37 SIGRTMIN+3
38 SIGRTMIN+4
39 SIGRTMIN+5
40 SIGRTMIN+6
41 SIGRTMIN+7
42 SIGRTMIN+8
43 SIGRTMIN+9
44 SIGRTMIN+10
45 SIGRTMIN+11
46 SIGRTMIN+12
47 SIGRTMIN+13
48 SIGRTMIN+14
49 SIGRTMIN+15
50 SIGRTMAX-14
51 SIGRTMAX-13
52 SIGRTMAX-12
53 SIGRTMAX-11
54 SIGRTMAX-10
55 SIGRTMAX-9
56 SIGRTMAX-8
57 SIGRTMAX-7
58 SIGRTMAX-6
59 SIGRTMAX-5
60 SIGRTMAX-4
61 SIGRTMAX-3
62 SIGRTMAX-2
63 SIGRTMAX-9
64 SIGRTMAX
(1)非实时信号不排队,信号的响应会相互嵌套。
(2)如果目标进程没有及时响应非实时信号,那么随后到达的该信号将会被丢弃。
(3)每一个非实时信号都对应一个系统事件,当这个事件发生时,将产生这个信号。
(4)如果进程的挂起信号中含有实时和非实时信号,那么进程优先响应实时信号并会从大到小依次响应,而非实时信号没有固定的次序。
后面的31个信号(从SIGRTMIN[34] 到 SIGRTMAX[64])是Linux系统新增的实时信号,也称为"可靠信号",这些信号的特点如下。
(1)实时信号的响应次序按接收顺序排队,不嵌套。
(2)即使相同的实时信号被同时发送多次,也不会被丢弃,而会依次逐个响应。
(3)实时信号没有特殊的系统事件与之对应。
上述特征在后面介绍完信号相关核心的API之后,都可以一一验证。表5-9所示是非实时信号的详细介绍。
表5-9 信号的值、默认响应动作以及产生的原因
信 号
值
默认动作
备注
SIGHUP
1
终止
控制终端被关闭时产生
SIGINT
2
终止
从键盘按键产生的中断信号(如Ctrl+C)
SIGQUIT
3
终止并产生转储文件
从键盘按键产生的退出信号(如Ctrl+\)
SIGILL
4
终止并产生转储文件
执行非法指令时产生
SIGTRAP
5
终止并产生转储文件
遇到进程断点时产生
SIGABRT
6
终止并产生转储文件
调用系统函数abort( )时产生
SIGBUS
7
终止并产生转储文件
总线错误时产生
SIGFPE
8
终止并产生转储文件
处理器出现浮点运算错误时产生
SIGKILL
9
终止
系统杀戮信号
SIGUSR1
10
终止
用户自定义信号
SIGSEGV
11
终止并产生转储文件
访问非法内存时产生
续表
信 号
值
默认动作
备注
SIGUSR2
12
终止
用户自定义信号
SIGPIPE
13
终止
向无读者的管道输入数据时产生
SIGALRM
14
终止
定时器到时间时产生
SIGTERM
15
终止
系统终止信号
SIGSTKFLT
16
终止
已废弃
SIGCHLD
17
忽略
子进程暂停或终止时产生
SIGCONT
18
恢复运行
系统恢复运行信号
SIGSTOP
19
暂停
系统暂停信号
SIGTSTP
20
暂停
由控制终端发起的暂停信号
SIGTTIN
21
暂停
后台进程发起输入请求时控制终端产生该信号
SIGTTOU
22
暂停
后台进程发起输出请求时控制终端产生该信号
SIGURG
23
忽略
套接字上出现紧急数据时产生
SIGXCPU
24
终止并产生转储文件
处理器占用时间超出限制值时产生
SIGXFSZ
25
终止并产生转储文件
文件尺寸超出限制值时产生
SIGVTALRM
26
终止
由虚拟定时器产生
SIGPROF
27
终止
profiling 定时器到时间时产生
SIGWINCH
28
忽略
窗口大小变更时产生
SIGIO
29
终止
I/O变得可用时产生
SIGPWR
30
终止
启动失败时产生
SIGUNUSED
31
终止并产生转储文件
同SIGSYS
对以上信号,需要着重注意如下问题。
(1)表5-6中罗列出来的信号的"值",在x86、PowerPC和ARM平台下是有效的,但是别的平台的信号值也许和表5-9的值不一致。
(2)"备注"中注明的事件发生时会产生相应的信号,但并不是说该信号的产生就一定发生了这个事件。事实上,任何进程都可以使用函数kill( )来产生任何信号。
(3)信号SIGKILL和SIGSTOP是两个特殊的信号,它们不能被忽略、阻塞或捕捉,只能按默认动作来响应。换句话说,除了这两个信号之外的其他信号,接收信号的目标进程按照如下顺序做出反应。
① 如果该信号被阻塞,那么将该信号挂起,不对其做任何处理,等到解除对其阻塞为止。否则进入第②步。
② 如果该信号被捕捉,那么进一步判断捕捉的类型:
如果设置了响应函数,那么执行该响应函数。
如果设置为忽略,那么直接丢弃该信号。
否则进入第③步。
③ 执行该信号的默认动作。
对信号有了初步的认识之后,下面分几部分来阐述这种通信机制。
喜欢的朋友可以添加我们的微信账号:
- linux 信号&信号处理
- linux 信号&信号处理
- linux 信号&信号处理
- linux 信号 信号集
- linux信号--阻塞信号
- Linux信号
- linux信号
- Linux信号
- linux 信号
- linux 信号
- linux 信号
- Linux 信号
- linux信号
- linux 信号
- linux 信号
- linux信号
- Linux信号
- Linux 信号
- 天下无贼反信息诈骗联盟升维 大数据构筑新防御体系
- HDU 2489 Minimal Ratio Tree【最小生成树】
- android学习---Service
- 指针、数组运算及函数调用
- Hibernate报错:No default constructor for entity xxx
- linux信号
- Qt设置窗口内组件的自适应
- 不仅仅是新闻,2015年雾霾事件盘点
- 背靠2.8亿用户下的中国电竞 CIG正在等风来
- 那些登上“锋神榜”的App,它们有何精妙之处?
- HDR电视,由国内厂商树立标准的黑科技
- 开发者召集:果合联合业内力量建立更好创业环境
- 【CES归来篇】2016可穿戴新风向,健康医疗产品大盘点
- 浅谈MVC、MVP、MVVM架构模式的区别和联系