有人可以解释一下sigaction和signal之间的区别吗?我知道它们的信号工作方式不同,具体取决于您在哪台机器上工作,即 Mac、Windows 或 Linux,并且 sigaction 在所有平台上的工作方式都相同。但我的问题是为什么会这样,因为我尝试在不同的平台上使用信号并且得到了相同的结果。另外,你们会推荐使用哪一个来进行更好的练习。
问问题
853 次
1 回答
3
我对sigaction
和知之甚少signal
。但我知道的是:
sigaction
call 比signal
call 使用起来更复杂(你已经知道了)。sigaction
允许您获取有关程序接收到的信号的更多信息(参见siginfo_t
结构)。- 根据 Michael KERRISK 的书:“Linux 编程接口”(第 22 章,第 456 页):“......始终使用
sigaction
而不是signal
建立信号处理程序是一种好习惯。” - 最后(再次来自 Michael KERRISK 的书):“Linux 内核包含
signal
as 系统调用的实现,此实现提供了较旧的、不可靠的语义。但是,glibc
通过提供调用的信号库函数绕过此系统调用sigaction
”
希望能帮助到你。
于 2015-06-05T03:16:32.637 回答