确定哪个信号中断了我的系统调用(Linux)

时间:2010-02-26 23:00:56

标签: c linux signals

我的系统调用因为被信号中断而返回后,有没有办法确定哪种信号类型(即子进程终止)导致了中断?

2 个答案:

答案 0 :(得分:3)

您需要设置处理程序。看看here

答案 1 :(得分:3)

Linux中有许多处理信号的工具:

  • waitpid(2)可用于内联SIGCHLD
  • sigaction(2)可用于设置处理程序函数以响应特定信号,SA_RESTART标志会影响某些系统调用是否被中断重新启动
  • sigprocmask(2)可用于阻止大量信号
  • sigwait(3)可用于等待内联信号的数量
  • 最新内核支持signalfd(2),当需要组合信号处理和非阻塞IO时,这很方便。

然后当我们开始谈论线程时,整个下一层次的复杂性,但是如果你明确地处理信号,你通常不关心哪个信号中断了系统调用。