我已经成功地将一个handler函数附加到SIG_INT和SIG_KILL,但是现在我希望能够在某个点(确切地说,在fork之后)对该处理程序“解除绑定”。这是我附加处理程序的方式:

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);

中断处理程序只打印某些内容。

最佳答案

您可能需要恢复以前的配置:

struct sigaction sa, oldsa;

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

/* ... */

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

关于c - 解除绑定(bind)处理程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8405770/

10-12 05:47