来自C中system()的CTRL + C无法识别

时间:2018-04-17 17:09:58

标签: c signals

我试图制作一个可以在CTRL + C之后继续运行的C程序。

我写了这个:

#include <stdlib.h>
#include <stdio.h>
#include <signal.h>
#include <unistd.h>

void acceptCommands();

void sighandle_int(int sign)
{
    //system("^C;./a.out");   *out:* ^Csh: ^C: command not found
  

//如何在这里保护应用程序免于被杀?

}

int main(int argc, char **argv)
{
    signal(SIGINT, sighandle_int);

    acceptCommands();   

    return 0;
}

我该怎么办? 谢谢

1 个答案:

答案 0 :(得分:0)

我正在尝试制作一个可以在CTRL + C之后继续运行的C程序。 ?当进程收到CTRL + C时,你使用sigaction()设置处理程序,在那个处理程序中你可以指定是继续还是忽略或者你想要什么。

可能你想要这样

void sighandle_int(int sign) {
            /*when process receives SIGINT this isr will be called,
            here you can specify whether you want to continue or ignore,
            by signal handler again */
            signal(SIGINT,SIG_IGN);
            //or
            signal(SIGINT,sighandle_int);
    }

同时使用sigaction()代替signal(),如What is the difference between sigaction and signal?

所述