我的系统调用因为被信号中断而返回后,有没有办法确定哪种信号类型(即子进程终止)导致了中断?
答案 0 :(得分:3)
您需要设置处理程序。看看here。
答案 1 :(得分:3)
Linux中有许多处理信号的工具:
waitpid(2)
可用于内联SIGCHLD
sigaction(2)
可用于设置处理程序函数以响应特定信号,SA_RESTART
标志会影响某些系统调用是否被中断或重新启动
sigprocmask(2)
可用于阻止大量信号
sigwait(3)
可用于等待内联信号的数量
signalfd(2)
,当需要组合信号处理和非阻塞IO时,这很方便。
然后当我们开始谈论线程时,整个下一层次的复杂性,但是如果你明确地处理信号,你通常不关心哪个信号中断了系统调用。