UNIX中断系统调用和可重入函数

         可中断的系统调用指的是进程阻塞在这个系统调用期间接受到一个信号,该系统调用会返回并返回出错信息errno=ENTER(注意:信号都是内核接收,并在系统从内核态返回到用户态的时候检查内核信号队列中是否有挂起的信号,若有则执行信号处理程序。信号中断系统调用这个现象是信号促使系统从内核态切换到用户态)。

        高速系统调用不会被中断,当执行该系统调用进入内核态的时候如果此时收到一个信号,则系统调用的内核态会继续执行,并不会被中断,当系统调用的内核态执行完毕的时候才会检查如果发现有挂起信号则执行信号处理函数

         可重入函数指的是这个系统调用函数在被信号中断后(中断后此时肯定从内核态返回了),指令进入信号处理程序后仍然允许在信号处理程序中调用这个系统调用而不会出错。

         注意不管什么情况下,系统调用被中断后,系统调用都是已经返回的,即信号处理程序返回后都是回到用户态的指令序列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值