【问题标题】:Unbind sigaction handler解除绑定 sigaction 处理程序
【发布时间】:2011-12-06 19:41:58
【问题描述】:

我已成功地将处理程序函数附加到 SIG_INT 和 SIG_KILL 但现在我希望能够在某个点“解除绑定”处理程序(准确地说是在分叉之后)。这就是我附加处理程序的方式:

struct sigaction sa;
sa.sa_handler = interrupt_handler;
sigempty(&sa.sa_mask);
sa.sa_flags = SA_SIGINFO;

sigaction(SIG_INT, &sa, NULL);
sigaction(SIG_KILL, &sa, NULL);

interrupt_handler 只打印一些东西。

【问题讨论】:

  • 你不能“捕捉”一个 SIGKILL 信号。它总是会终止程序。
  • @Milan:道格·麦克罗伊可以赶上 SIGKILL。 cs.dartmouth.edu/~sinclair/doug
  • @Milan 感谢您的提醒,反正并不真的需要它来捕杀。

标签: c gcc posix signals


【解决方案1】:

您可能想要恢复以前的处置:

struct sigaction sa, oldsa;

/* Change it but save previous state. */
sigaction(SIG_INT, &sa, &oldsa);

/* ... */

/* Restore previous stuff. */
sigaction(SIG_INT, &oldsa, NULL);

【讨论】:

  • 谢谢,@cnicutar!正是我想要的!
猜你喜欢
  • 2019-04-11
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 2021-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-15
相关资源
最近更新 更多