在C程序中捕获Ctrl + C

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C程序中捕获Ctrl + C相关的知识,希望对你有一定的参考价值。

我使用以下代码在我的C程序中捕获Ctrl + C

[代码] >>

void sig_handler(int signo)

    if (signo == SIGINT) 
        exit(EXIT_SUCCESS);



void main ()

    ......

    if(signal(SIGINT, sig_handler)== SIG_ERR) 
    
        printf(">>>>>>>>>>>>>>>>>>>>> SIG INT EROOR !!!! sigint=%d ID=%d \n",SIGINT, getpid());
    
    else 
        printf(">>>>>>>>>>AFTER>>>>>>>>>>> SIG INT  sigint=%d PID=%d \n",SIGINT, getpid());

    char *buf = NULL;
    asprintf(&buf, "%d", getpid());
    write(fd, buf, strlen(buf));
    free(buf);
    uloop_run(); //entering main loop

    ubus_exit();
    uloop_done();

    xml_exit();
    config_exit();

    free(tmp);

    closelog();

    log_message(NAME, L_NOTICE, "exiting\n");

    return 0;

我的目的是捕获Ctrl

+ C,但似乎信号处理程序功能即sig_handler()无法运行。

我想知道如何解决它?

我使用以下代码在我的C程序中捕获Ctrl + C代码void sig_handler(int signo)if(signo == SIGINT)exit(EXIT_SUCCESS); void main()...... if(signal(SIGINT,...

答案

作为iharob answered,您应该添加信号的处理程序。

另一答案

您应该使用此功能将处理程序添加到信号中

以上是关于在C程序中捕获Ctrl + C的主要内容,如果未能解决你的问题,请参考以下文章

如何捕获 CTRL+C 并在 python 的主函数中执行条件? [复制]

在python中捕获Ctrl + C / SIGINT并优雅地退出多进程[重复]

捕获Ctrl + C中断 优雅的退出程序 golang

cmd模块:捕获Ctrl + C [重复]

Linux Shell中捕获CTRL+C

是否可以以“延迟”方式捕获 Ctrl+C 信号并运行清理功能?