信号及报警功能

Signal and alarm function

我在收到的 C 编程任务中需要一些帮助或建议... 任务是使用 alarm(sec) 需要调用信号 SIGALRM。 我必须在 1 秒内增加一个 long 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();
}

可能,这就是您要找的。

#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++;
}