linux 使用setittimer 如何设定一段时间后让方程停止

#include<stdio.h>#include<signal.h>#include<sys/time.h>#include<stdlib.h>#defineINTER... #include <stdio.h>
#include <signal.h>
#include <sys/time.h>
#include <stdlib.h>
#define INTERVAL 5

int howmany = 0;

void alarm_wakeup (int i)
{
struct itimerval tout_val;

signal(SIGALRM,alarm_wakeup);

howmany += INTERVAL;

printf("\n%d sec up partner, Wakeup!!!\n",howmany);
tout_val.it_interval.tv_sec = 0;
tout_val.it_interval.tv_usec = 0;
tout_val.it_value.tv_sec = INTERVAL; /* 10 seconds timer */
tout_val.it_value.tv_usec = 0;

setitimer(ITIMER_REAL, &tout_val,0);

}

void exit_func (int i)
{
signal(SIGINT,exit_func);
printf("\nBye Bye!!!\n");
exit(0);
}

int main ()
{
struct itimerval tout_val;

tout_val.it_interval.tv_sec = 0;
tout_val.it_interval.tv_usec = 0;
tout_val.it_value.tv_sec = INTERVAL; /* 10 seconds timer */
tout_val.it_value.tv_usec = 0;
setitimer(ITIMER_REAL, &tout_val,0);

signal(SIGALRM,alarm_wakeup); /* set the Alarm signal capture */
signal(SIGINT,exit_func);

while (1)
{
//printf("!");
}

return 0;

}

output:
5 sec up partner, Wakeup!!!

10 sec up partner, Wakeup!!!

15 sec up partner, Wakeup!!!

20 sec up partner, Wakeup!!!

25 sec up partner, Wakeup!!!

30 sec up partner, Wakeup!!!
^C
Bye Bye!!!
这个例子是开始间隔5s后执行程序 之后每5s运行程序一次
但是没设置停止时间
请问如何设置程序到达一定时间停止?
比如5分钟?
谢谢!!
展开
 我来答
sunyqg
2012-03-30 · TA获得超过1084个赞
知道小有建树答主
回答量:477
采纳率:75%
帮助的人:631万
展开全部
setitimer()触发SIGALRM信号,alarm_wakeup()再调用setitimer()递归运行,主程序死循环等待这个信号系统的反复执行。要终止它,有2种方法:
1、主程序while{}中判断howmany == 300时,调用raise(SIGINT)终止或者直接break出循环就行了。
2、alarm_wakeup()中在setitimer()前,判断howmany == 300时调用raise(SIGINT)一样可以终止程序执行。
启帆信息
2024-11-19 广告
启帆信息是英伟达中国区代理商,原厂授权代理,提供全面的软件技术解决方案以及NVIDIA以太网产品、交换机等产品,欢迎前来咨询!... 点击进入详情页
本回答由启帆信息提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式