擦鞋匠 发表于 2021-3-13 16:36:09

请教各位:signal_pending()之返回值-ERESTARTSYS的作用

看了网上对signal_pending()之返回值-ERESTARTSYS的解释,额,还是有点迷糊,因此特来请教各位,希望各位赐教,不胜感激!

1、以下是从网上找到的解释:


2、以下是我的理解+猜想:
正常的系统调用:
      ①用户程序
      ②软中断 ,陷入内核
      ③执行系统调用
夹杂着信号的系统调用:
      ①用户程序
      ②软中断,陷入内核
      ③产生信号,执行信号处理函数
      ④信号执行完成,返回用户态
      ⑤通过判断signal_pending()之返回值,发现系统调还未执行,接着再次进入内核态执行系统调用

3、我的问题:
      ①上述我的理解是否正确?
      ②我记得我之前在网上看到一个帖子,现在我找不到了,他表达的意思是:从内核态返回用户态的末尾才会“顺手”执行信号处理函数。这句话的意思正确嘛?
      ③如果网友的说法是正确的,那我就更迷糊了:既然都已经执行信号处理函数了,为什么在此之前不执行系统调用(这时正好还在内核态,否则还要重新进入内核态),何必多此一举呢?

感谢各位拉。

擦鞋匠 发表于 2021-3-16 09:01:42

希望大神前来指教

leonliu_2811 发表于 2021-3-16 10:52:34

去买块开发板写些例程学的更快些,很多学术问题在开发中根本碰不到。
页: [1]
查看完整版本: 请教各位:signal_pending()之返回值-ERESTARTSYS的作用