我正在尝试在 C/linux 中编写一个忽略 SIGINT 和 SIGQUIT 信号并退出 SIGTERM 的进程。对于其他信号,它应该写出信号和时间。我无法捕捉所有信号,因为我只熟悉捕捉 1 个信号。如果有人可以帮助我解决这个问题,我将不胜感激。这是我的代码:
#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <time.h>
int done = 0;
void term(int signum)
{
    if (signum == 15)
    {   
        //printf("%d\n",signum);        
        printf("Received SIGTERM, exiting ... \n");
        done  = 1;
    }
    else
    {
        time_t mytime = time(0);
        printf("%d: %s\n", signum, asctime(localtime(&mytime)));
        printf("%d\n",signum);
    }
}
int main(int argc, char *argv[])
{
    struct sigaction action;
    memset(&action, 0, sizeof(struct sigaction));
    action.sa_handler = term;
    sigaction(SIGTERM, &action, NULL);
    struct sigaction act;
    memset(&act, 0, sizeof(struct sigaction));
    act.sa_handler = SIG_IGN;
    sigaction(SIGQUIT, &act, NULL);
    sigaction(SIGINT, &act, NULL);
    int loop = 0;
    while(!done)
    {
        sleep(1);
    }
    printf("done.\n");
    return 0;
}