void f(int);
void main()
{
signal(SIGINT, f);
int i = 4;
while(i < 1000)
{
sleep(10);
i++;
}
}
void f( int signum ){
printf ( "OUCH \n") ;
}
如果我点击&#34; ctr C&#34;当程序循环时,它打印出&#34; OUCH&#34;到终点站。无论如何我可以使用信号处理程序打印出程序循环的当前数字。
答案 0 :(得分:1)
您可以使用全局变量来存储循环变量的值。然后,您可以从信号处理程序访问此变量。虽然在这样做时你需要非常小心。
答案 1 :(得分:0)
是的,您只需添加一个静态变量,并在每次迭代中保留其中的值。
void f(int);
static int temp=0;
void main()
{
int i = 4;
while(i < 1000)
{
sleep(10);
i++;
temp=i;
}
}
void f( int signum ){
printf ( "OUCH %d \n", temp) ;
}