我一直在关注捕捉信号的许多方法。最近的一个是使用全局变量。我的目标是捕获控件C,当它被按下时,它将一个标志设置为“1”,然后触发一些代码运行。
我的问题是,我可以得到信号被捕捉。但是发现不可能运行应该在if语句中运行的代码。
void handleSignal (int signal);
int signalAction = 0;
int main ()
{
//catch signal control C
if (signal(SIGINT, handleSignal) == SIG_ERR)
{
write (2, "Error catching signal C \n", 26);
}
if (signalAction == 1)
{
write(1, "WOOO CONTROL C \n", 16);
signalAction = 0;
}
printf("%d \n", signalAction);
while(1)
sleep(1);
}
void handleSignal (int signal)
{
if (signal == SIGINT)
{
write(1, "ContrlC \n", 11);
signalAction = 1;
}
}
当控制c被按下时,我从信号处理器上打印出“控制”。然而,主函数if中的if语句(signalAction==1)。。。。不会跑。
变量必须设置为1。他们的问题主要是因为某种原因吗?
最佳答案
在while循环中移动if(signalAction ==1)