【问题标题】:sigaction: restore handler or not?sigaction:是否恢复处理程序?
【发布时间】:2012-09-26 08:49:41
【问题描述】:

如果我在代码开头调用 sigaction,

sigaction(SIGPIPE, &pipe_act, NULL);

如果我收到 sigpipe,在执行 pipe_act 后,安装的处理程序仍然是 pipe_Act,还是自动为 sigpipe 设置默认处理程序?

【问题讨论】:

  • 您真的需要sigaction,还是更简单的signal 就足够了?

标签: c unix signals


【解决方案1】:

这取决于您的标志 (pipe_act->sa_flags) 是否包含 SA_RESETHAND。如果是,则信号处理程序是“一次性的”,并在被调用后被删除(即处理程序被重置为默认处理程序),但如果不是,则处理程序保持原位,直到您手动更改它。

【讨论】:

  • 我不知道 SA_RESETHAND(直到现在)。我不会以任何方式修改该标志。所以它仍然是 pipe_act ?
  • @giozh:正确,默认没有设置标志。
猜你喜欢
  • 1970-01-01
  • 2019-04-11
  • 1970-01-01
  • 1970-01-01
  • 2021-02-15
  • 2013-06-03
  • 2021-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多