如何在收到“SIGINT”时安装信号处理程序来调用函数

时间:2017-03-13 19:37:36

标签: c signals

当我收到stopContinue()时,我应该安装一个信号处理程序来调用函数SIGINT。这是我在C中的代码片段,但我不确定这是否正确。请让我知道我哪里出错了。

struct sigaction act;

memset(&act, '\0', sizeof(act));
action.sa_flags = 0; 
action.sa_handler = stopContinue;
sigaction(SIGINT, &act, NULL);

这看起来大致正确吗?

讨论使用sigaction与action,以及这里使用的标志与另一个问题不同,这不是一个骗局。

1 个答案:

答案 0 :(得分:0)

如果您甚至不使用结构sigaction成员,为什么要使用sa_flags?要在按下 Ctrl + C 时拨打stopContinue,您可以使用:

signal(SIGINT, stopContinue);

如果你只是想忽略 Ctrl + C ,你可以更容易:

signal(SIGINT, SIG_IGN);

SIG_IGN是忽略信号的macro