信号和报警功能

时间:2015-11-02 09:35:09

标签: c signals alarm

我在收到的C编程任务中需要一些帮助或建议...... 任务是alarm(sec)需要调用信号SIGALRM。 我必须在1秒内增加一个长的int数,然后在屏幕上打印出那个时间内增加的数量。我怀疑它必须与alarm(1);一起使用 我有循环来增加数量...位完全不知道如何在1秒后停止它,尤其是signal(SIGALRM,xxx) 我可以粘贴我的代码吗?

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

int loop_function() { 
    int counter = 1; 
    long int n = 1; 
    while(n!=0) { 
        ++counter; 
        n++; 
        printf("%d: %d\n",counter,n); 
    } 
} 

int main() { 
   loop_function();
}

1 个答案:

答案 0 :(得分:0)

可能这就是你要找的东西。

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

void sigalrm_handler(int);
int loop_function();

static int counter = 1;
static long int n = 1;

int main()
{
    signal(SIGALRM, sigalrm_handler);
    //This will set the alarm for the first time.
    //Subsequent alarms will be set from sigalrm_handler() function
    alarm(1);

    printf("Inside main\n");

    while(1)
    {
        loop_function();
    }
    return(0);
}

void sigalrm_handler(int sig)
{
    printf("inside alarm signal handler\n");
    printf("%d: %d\n",counter,n);
    //exit(1);
    alarm(1);
}

int loop_function()
{
        ++counter;
        n++;
}