【问题标题】:How do i remove a signal handler如何删除信号处理程序
【发布时间】:2012-03-07 07:56:14
【问题描述】:

我已经制作了跟随信号处理程序

struct sigaction pipeIn;
pipeIn.sa_handler = updateServer;
sigemptyset(&pipeIn.sa_mask);
sa.sa_flags = SA_RESTART;

if(sigaction(SIGUSR1, &pipeIn, NULL) == -1){

    printf("We have a problem, sigaction is not working.\n");
    perror("\n");
    exit(1);    

}

如何删除或阻止这个特定的处理程序,以便我可以设置另一个使用相同信号的信号处理程序?谢谢。

【问题讨论】:

    标签: c posix signal-handling


    【解决方案1】:

    调用sigaction(2)时使用SIG_DFL代替函数指针。

    【讨论】:

    • 或者只是用你的新信号处理程序替换现有的信号处理程序;无需先删除旧的。
    • 如果您只想删除信号处理程序(我找到了一个我收到循环信号的示例),那么signal(SIGUSR1, SIG_DFL); 是等效的,没有结构 sigaction 的尴尬。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 2011-04-23
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多