当前位置: 技术问答>linux和unix
如何让程序以1秒为周期反复运行
来源: 互联网 发布时间:2016-03-03
本文导语: 现在遇到一个问题,一个程序要以1秒的周期一直运行 whlie(1){ Dosomething(); } 在这个循环中要控制Dosomething函数每1秒执行1次,如果用sleep(1000)的话Dosomething函数 执行的时间就不能算在1秒周期之内了,小弟在...
现在遇到一个问题,一个程序要以1秒的周期一直运行
whlie(1){
Dosomething();
}
在这个循环中要控制Dosomething函数每1秒执行1次,如果用sleep(1000)的话Dosomething函数
执行的时间就不能算在1秒周期之内了,小弟在此候教了。因为初学Linux c 希望大家不吝赐教。
whlie(1){
Dosomething();
}
在这个循环中要控制Dosomething函数每1秒执行1次,如果用sleep(1000)的话Dosomething函数
执行的时间就不能算在1秒周期之内了,小弟在此候教了。因为初学Linux c 希望大家不吝赐教。
|
用定时器,信号.
下面是个简单的例子.你看看.
#include
#include
void catch(int sig)
{
alarm(1);
dosomething();
}
int main()
{
signal(SIGALRM,catch);
alarm(1);
while(1)
pause();
}
下面是个简单的例子.你看看.
#include
#include
void catch(int sig)
{
alarm(1);
dosomething();
}
int main()
{
signal(SIGALRM,catch);
alarm(1);
while(1)
pause();
}
|
在信号处理函数里要避免调用不可重入函数. 所以如果用alarm + signal来实现, 可以试试.
#include
#include
#include
#include
static void
alarm_func(int signum)
{
alarm(1);
}
int
main(void)
{
signal(SIGALRM, alarm_func);
alarm(1);
for (;;)
{
/* do something */
printf("do someting.n");
sleep(UINT_MAX);
}
return 0;
}