首页 > 其他 > 详细

中断系统调用

时间:2019-03-20 11:42:27      阅读:174      评论:0      收藏:0      [点我收藏+]

中断系统调用

系统调用可分为两类:慢速系统调用和其他系统调用。

  1. 慢速系统调用:可能会使进程永远阻塞的一类。如果在阻塞期间收到一个信号,该系统调用就被中断,不再继续执行(早期);也可以设定系统调用是否重启。如,readwritepausewait...
  2. 其他系统调用:getpidgetppidfork...

结合pause,回顾慢速系统调用:

慢速系统调用被中断的相关行为,实际上就是pause的行为: 如,read

  ① 想中断pause,信号不能被屏蔽。

  ② 信号的处理方式必须是捕捉 (默认、忽略都不可以)

  ③ 中断后返回-1, 设置errnoEINTR(表“被信号中断”)

  可修改sa_flags参数来设置被信号中断后系统调用是否重启。SA_INTERRURT不重启。 SA_RESTART重启。

扩展了解

  sa_flags还有很多可选参数适用于不同情况:捕捉到信号后,在执行捕捉函数期间,不希望自动阻塞该信号,可将sa_flags设置为SA_NODEFER,除非sa_mask中包含该信号。

中断系统调用

原文:https://www.cnblogs.com/lr1402585172/p/10563884.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!