【问题标题】:Sigaction vs Signal信号与信号
【发布时间】:2015-08-19 19:50:28
【问题描述】:

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

【问题讨论】:

标签: shell signals system-calls sigaction


【解决方案1】:

我对@9​​87654321@ 和signal 知之甚少。但我知道的是:

  • sigaction call 比 signal call 使用起来更复杂(你已经知道了)。
  • sigaction允许您获取有关程序接收到的信号的更多信息(参见siginfo_t 结构)。
  • 根据 Michael KERRISK 的书:“Linux 编程接口”(第 22 章,第 456 页):“...始终使用sigaction,而不是 signal 来建立信号处理程序。”
  • 最后(再次来自 Michael KERRISK 的书中):“Linux 内核包含 signal 作为系统调用的实现,此实现提供了较旧的、不可靠的语义。但是,glibc 通过提供信号库绕过了此系统调用调用sigaction"的函数

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    相关资源
    最近更新 更多