我们如何判断信号是否可以中断系统调用的执行?

我们如何判断信号是否可以中断系统调用的执行?

来自 Linux 编程接口

信号在以下时间之一传送:

  • 当进程在之前超时后重新调度时(即,在时间片开始时);或者
  • 系统调用完成时(信号的传递可能会导致阻塞系统调用过早完成)。

如何判断信号是否可以中断系统调用的执行?

哪些系统调用可以被哪些信号中断,即提前终止?

哪些系统调用不能被哪些信号中断?

谢谢。

答案1

我对 mosvy 在评论中所说的话的猜测是

  • 可以被信号中断的系统调用是 signal(7) 联机帮助页的“系统调用的中断和...”部分中列出的那些系统调用,无论它们是否可以重新启动,并且

  • 不能被信号中断的系统调用是那些没有列出的系统调用。

相关内容