Sigaction vs Signal

时间:2015-06-05 01:09:02

标签: shell signals system-calls sigaction

有人可以解释一下sigaction和signal之间的区别。我知道它们的信号工作方式不同,具体取决于您正在使用的是哪台计算机,即Mac,Windows或Linux,并且sigaction在所有平台上的工作方式相同。但我的问题是为什么会这样,因为我尝试在不同平台上使用信号并获得相同的结果。还有哪一个你推荐用于更好的练习。

1 个答案:

答案 0 :(得分:3)

我对sigactionsignal知之甚少。但我所知道的是:

  • sigaction通话使用比signal通话更复杂(正如您所知)。
  • sigaction可让您获取有关程序收到的信号的更多信息(请参阅siginfo_t结构)。
  • 根据Michael KERRISK的书: " Linux编程接口" (第22章,第456页):&# 34; ...总是使用sigaction而不是signal建立信号处理程序是一种好习惯。"
  • 最后(同样来自Michael KERRISK的书):" Linux内核包含signal的实现作为系统调用,此实现提供了较旧的,不可靠的语义。但是,glibc通过提供调用sigaction"
  • 的信号库函数来绕过此系统调用。

希望它有所帮助。