C 如何删除信号处理程序

C 如何删除信号处理程序,c,posix,signal-handling,C,Posix,Signal Handling,我已经做了跟踪信号处理程序 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");

我已经做了跟踪信号处理程序

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

}

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

调用时使用
SIG_DFL
代替函数指针。

或者用新的信号处理程序替换现有的信号处理程序;不需要先删除旧的。如果您只想删除信号处理程序(我发现了一个示例,其中我得到了循环信号),那么
signal(SIGUSR1,SIG_DFL)
是等效的,没有struct-sigaction的尴尬。