在linux中使用信号处理程序

时间:2014-11-14 05:33:20

标签: c linux

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;到终点站。无论如何我可以使用信号处理程序打印出程序循环的当前数字。

2 个答案:

答案 0 :(得分:1)

您可以使用全局变量来存储循环变量的值。然后,您可以从信号处理程序访问此变量。虽然在这样做时你需要非常小心。

请完成:Providing/passing argument to signal handler

答案 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) ;


}