当前位置:  技术问答>linux和unix

如何让一个循环运行一个固定时间?

    来源: 互联网  发布时间:2016-11-17

    本文导语:  本帖最后由 HEHE8737 于 2011-03-29 21:31:08 编辑 我想让下面这个while循环运行10秒,该怎样设置定时器呢?刚开始考虑了在while循环里用select函数,可是select阻塞到最大时间到了才执行下一条语句,不是我想要的。请大家指...

本帖最后由 HEHE8737 于 2011-03-29 21:31:08 编辑
我想让下面这个while循环运行10秒,该怎样设置定时器呢?刚开始考虑了在while循环里用select函数,可是select阻塞到最大时间到了才执行下一条语句,不是我想要的。请大家指教下!精度要求不高,达到秒级就行。
#include 
#include 
#include 
#include 
main()
{
FILE *fd;
int i=0;
while(1)
{
fd=fopen("exam","w+");
fprintf(fd,"%dn",i);
printf("i=%dn",i);
i++;
}
close(fd);
}

|
#define XXX 10 //定义时间
int main(int argc, char **argv)
{
time_t a;
time_t b;
time(&a);
while(1)
{
time(&b);
if(b > a + XXX)
break;
/*
自己的代码
*/

}

|
使用alarm可以实现啊,用一个全局变量tag初始化为0,然后在ALRM信号处理函数中将tag = 1,然后循环中增加如下代码, 比如:

while(1)
{
fd=fopen("exam","w+");
fprintf(fd,"%dn",i);
printf("i=%dn",i);
i++;
if(tag == 1)  // +
    break;    // +
}


这样只是粗略实现,不知道能不能满足楼主的要求

|
不一定非要定时器啊
在循环之前获取一下当前的系统时间
没此循环都再获取一次,减去之前获取的时间,得到秒差应该可以吧
根据秒差来决定是否执行下一次循环
精度要求不高,循环中或去当前时间可以不用这么平凡,比如每10(随便)个循环判断一次

|
首先,循环运行固定的时间烧CPU,没有任何意义。
其次,循环运行的时间也不可能是固定的。

|
难道我想对模拟信号连续采样10分钟的想法该怎么实现呢?crtl+c终止程序的话,fopen打开的文件不能保存


看着楼主这句话,不太明白楼主到底想实现什么

|
不知道sleep(sec)或是usleep(usec)合不合用?

|

如果数据量不大的情况下,可能缓冲区没满,这样终止程序后,文件中没有数据
如果数据量很大,已经填满缓冲区,那么缓冲区的数据会写入文件

可以把文件设置为无缓冲或行缓冲

|
那你写一次数据,就flush下

|
到秒级就读系统时间即可, 只要你循环一圈在1s内

select不能定时吧, 他是等一个超时时间, 检测到 东西 有变化就跳出, 而这个东西比如串口等数据, 等到就是东西, 你这里没有可以变化的东西


|
边写,边fflush一下应该可以吧

|
伪代码

while (1)
{
    int t1 = time();
    // ...
     int t2 = time();
    delay(10 - (t2 - t1));
}

    
 
 

您可能感兴趣的文章:

  • UX下如何判断线程是否还在运行?UX下如何在for循环进入死循环时,强行停止它(不再for中处理)?
  • 有趣的循环--你知道运行结果吗?
  • 在jsp页面中for循环语句为什么不运行???
  • 请问,对于管道,如果还没有write就开始read,为什么它的执行效果就跟运行一个无限循环一样?
  • 我写了shell脚本写了个循环,中间用了sleep,一旦运行起来,就杀不掉了
  • 有关gdb调试问题 如何实现让一个循环运行给定数目的次数(或条件满足停止)
  • gdb调试,每次循环怎么运行到指定的断点处,而不是单步调试
  • 一个串口通讯的程序,流程没有问题,程序在Linux下运行就死循环,在Cygwin下就好使?
  • 调用ACE_SSL_SOCK_Acceptor::accept函数的时候,进程死掉(在一个死循环中不断的调用accept,程序运行一段时间后,就会死掉)
  • shell程序 控制时间循环 !!!!
  • 请教:javascript 里有没有时间循环执行的函数,如我按住鼠标触发mousedown 事件函数时,反复执行我写的一个函数?
  • UNIX 循环输出时间段
  • C语言循环结构与时间函数用法实例教程
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • for循环最大支持多大的循环次数?这什么我执行10000次的时候发生了错误?
  • 循环套循环的问题.
  • 请教一个基础问题while循环怎么从10到0来循环10次?
  • json数据的列循环 JS循环遍历JSON数据
  • for循环中为什么在第8次循环会出现“memory fault coredumpe”的错误??
  • MySQL循环语句之while循环测试
  • shell while循环内的变量在循环外部值不能传递
  • ”整型变量j说明为volatile,这样就阻止了优化程序除去循环语句“ 这么理解这句话,为什么会除去循环语句?
  • 解析在内部循环中Continue外部循环的使用详解
  • 请教这种循环的执行过程
  • jquery进行数组遍历如何跳出当前的each循环
  • c#入门之循环语句使用详解(for循环、do/while)
  • jquery退出each循环的写法
  • 请教:LINUX用不用循环机制?与WINDOWS有什么本质区别?
  • java中怎样退出 for 循环?
  • Jquery each方法跳出循环,并获取返回值(实例讲解)
  • “死锁就是循环等待”这句话不对吗?谢谢!
  • Python跳出循环语句continue与break的区别
  • break在java里是跳出所有循环吗?
  • 如何实现exec系列的循环调用???


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3