信号

本文介绍了Unix系统中的信号机制,包括信号的发送、接收和处理。重点讨论了不可被捕捉和忽略的信号SIGKILL和SIGSTOP,信号阻塞和处理函数执行期间的行为,以及EINTR错误码对系统调用的影响。还提到了信号在fork和exec过程中的行为,不可重入函数的限制,以及kill和raise函数在发送信号中的作用。最后,概述了系统关机时的信号流程。
摘要由CSDN通过智能技术生成
1.信号又称软中断
2.信号的发送
 
1)一个进程发送给另一个进程(或自身)
  2)内核发给进程
3.不可被捕捉、不能忽略的信号:SIGKILL、SIGSTOP
4.信号处理函数执行期间,后续递交的相同信号将被阻塞;另外还可以通过在调用sigaction函数时设置sa_mask参数的值指定其它被阻塞的信号,如,将其设置为0则表示只阻塞相同信号
5.承上,如果在阻塞期间,一个信号被阻塞了多次,在阻塞解除后,该信号只被递交一次,也就是说POSIX信号不提供排队机制
6.EINTR:如果进程阻塞于某个系统调用(如accept)时,有信号到达,且进程捕获并处理了这个信号,那么当前的系统调用将被中断(被信号中断)而返回EINTR,一般内核对于被中断的系统调用的处理是:处理完信号后重启系统调用。但是并非所有的内核都会自动重启被中断的系统调用,因此我们需要对系统调用出错返回的EINTR进行特殊处理(一般为再次调用该系统调用,以达到与内核自动重启被中断的系统调用相同的效果)。但是connect函数是一个例外,它一旦返回EINTR就不能被再次调用
7.我们把系统调用分为两类:低速系统调用和其它系统调用;被中断的系统调用一般为低速系统调用,它们是可能使进程永远阻塞的系统调用,如accept、read、write等
8.fork一个子进程时,父进程中的信号处理函数在子进程中继续有效;但是如果子进
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值