Linux Signal

这篇博客介绍了Linux系统中的信号,包括信号的来源、处理方式以及特殊信号如SIGSTOP、SIGKILL和SIGILL。讨论了系统调用signal和kill在处理信号中的作用,还提供了信号处理函数的示例。
摘要由CSDN通过智能技术生成

哪些情况会引发信号


1.键盘事件  ctrl +c  ctrl +\
2.非法内存  如果内存管理出错,系统就会发送一个信号进行处理
3.硬件故障  同样的,硬件出现故障系统也会产生一个信号
4.环境切换  比如说从用户态切换到其他态,状态的改变也会发送一个信号,这个信号会告知给系统

 

进程表的表项中有一个软中断信号域,进程对不同的信号可以同时保留,但对于同一个信号,进程并不知道在处理之前来过多少个。 

 

内核给一个进程发送软中断信号的方法,是在进程所在的进程表项的信号域设置对应于该信号的位。这里要补充的是,如果信号发送给一个正在睡眠的进程,那么要看 该进程进入睡眠的优先级,如果进程睡眠在可被中断的优先级上,则唤醒进程;否则仅设置进程表中信号域相应的位,而不唤醒进程。这一点比较重要,因为进程检 查是否收到信号的时机是:一个进程在即将从内核态返回到用户态时;或者,在一个进程要进入或离开一个适当的低调度优先级睡眠状态时。

 

运行如下命令,可看到Linux支持的信号列表:

$ kill -l
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) SIGTE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值