Linux Signal

一、信号类型
Linux系统共定义了64种信号,分为两大类:可靠信号与不可靠信号,前32种信号为不可靠信号,后32种为可靠信号。
不可靠信号: 也称为非实时信号,不支持排队,信号可能会丢失, 比如发送多次相同的信号, 进程只能收到一次. 信号值取值区间为1~31;
可靠信号: 也称为实时信号,支持排队, 信号不会丢失, 发多少次, 就可以收到多少次. 信号值取值区间为32~64
1.2 信号表
在终端,可通过kill -l查看所有的signal信号
取值名称解释默认动作
1
SIGHUP
挂起
2
SIGINT
中断
3
SIGQUIT
退出
4
SIGILL
非法指令
5
SIGTRAP
断点或陷阱指令
6
SIGABRT
abort发出的信号
7
SIGBUS
非法内存访问
8
SIGFPE
浮点异常
9
SIGKILL
kill信号
不能被忽略、处理和阻塞
10
SIGUSR1
用户信号1
11
SIGSEGV
无效内存访问
12
SIGUSR2
用户信号2
13
SIGPIPE
管道破损,没有读端的管道写数据
14
SIGALRM
alarm发出的信号
15
SIGTERM
终止信号
16
SIGSTKFLT
栈溢出
17
SIGCHLD
子进程退出
默认忽略
18
SIGCONT
进程继续
19
SIGSTOP
进程停止
不能被忽略、处理和阻塞
20
SIGTSTP
进程停止
21
SIGTTIN
进程停止,后台进程从终端读数据时
22
SIGTTOU
进程停止,后台进程想终端写数据时
23
SIGURG
I/O有紧急数据到达当前进程
默认忽略
24
SIGXCPU
进程的CPU时间片到期
25
SIGXFSZ
文件大小的超出上限
26
SIGVTALRM
虚拟时钟超时
27
SIGPROF
profile时钟超时
28
SIGWINCH
窗口大小改变
默认忽略
29
SIGIO
I/O相关
30
SIGPWR
关机
默认忽略
31
SIGSYS
系统调用异常
二、信号产生
信号来源分为硬件类和软件类:
2.1 硬件方式
用户输入:比如在终端上按下组合键ctrl+C,产生SIGINT信号;
硬件异常:CPU检测到内存非法访问等异常,通知内核生成相应信号,并发送给发生事件的进程;
2.2 软件方式
通过系统调用,发送signal信号:kill(),raise(),sigqueue(),alarm(),setitimer(),abort()
kernel,使用 kill_proc_info()等
native,使用 kill() 或者raise()等
java,使用 Procees.sendSignal()等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值