linux信号处理一点疑问

Linux何时检测信号并处理,看到过有文章说系统调用返回前检测是否有信号,但是如果程序没有调用系统调用呢,难道就不能处理信号了。一个简单的死循环,没有任何系统调用,在接收到信号后,程序终止,这种情况下信号是怎样检测的
全部评论
我想大概是指APUE 10.5的那句话吧:当捕捉到信号时,被中断的是内核中执行的系统调用(而非函数)。我的理解是,内核的系统调用被包装成了C库函数,比如read函数被中断,中断的是系统调用部分而非外壳部分。不是说用户态代码不能被中断。Linux/Unix系统编程手册上说的是,一旦内核接下来要调度进程执行,等待中的(pending)信号就会马上到达,然后处理,所以跟是否系统调用没关系,取决于内核何时分配时间片给进程。
点赞 回复 分享
发布于 2018-05-04 16:56
调度队列任务切换也会
点赞 回复 分享
发布于 2018-05-04 16:11
可以理解为软中断,由操作系统来强行暂停程序,并调用信号效应函数,待响应函数运营结束,再继续运行程序
点赞 回复 分享
发布于 2018-05-03 22:42

相关推荐

评论
点赞
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务