我在收到的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();
}
答案 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++;
}