如何每隔一段时间自动执行程序?

killua1213 2007-08-31 05:32:15
求一C程序,要求每隔一段时间(比如说1分钟)就打印1行语句,如hello,world!程序一直跑着,不能中断,不能用死循环(太耗系统资源)。谢谢各位!
...全文
560 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
killua1213 2007-09-11
  • 打赏
  • 举报
回复
呵呵,感谢大家集思广益!
_石头_ 2007-09-05
  • 打赏
  • 举报
回复
其实我觉得代码对你并不重要,重要的是思路,我的思路就是在程序里面读取当前时间,与上次运行时的时间比较,如果>=设定时间,程序就可以运行,否则就不用你会它!
另外,如果你确实要程序一直不停的跑,run_num这个变量取消就是了,它只是用来调试的!
把while(run_num<10);改成while(1);除非你关电源否则程序不会停下来!^_^
_石头_ 2007-09-05
  • 打赏
  • 举报
回复
我只是借用了dos.h里面的结构定义和读取系统时间函数而已:
struct time {
unsigned char ti_min; /* Minutes */
unsigned char ti_hour; /* Hours */
unsigned char ti_hund; /* Hundredths of seconds */
unsigned char ti_sec; /* Seconds */
};

gettime()函数用来获取系统的当前时间.另外,给你会贴的这个程序我是用tc2调试的
killua1213 2007-09-05
  • 打赏
  • 举报
回复
to星语:我是不想用死循环,所以在寻求另外一种解决方案
killua1213 2007-09-05
  • 打赏
  • 举报
回复
楼上的兄弟,dos.h是在什么地方的?你用的是什么开发环境?另外run_num的设置还是没办法使程序一直跑啊...鉴于你贴代码这一点,分肯定是少不了你的了 :)
_石头_ 2007-09-03
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<dos.h>

void main()
{
unsigned temp_time,temp, run_time;
struct time t1,t2;
char run_num=0; /*控制程序循环,便于调试 */
gettime(&t1);
temp_time=t1.ti_min*60+t1.ti_sec; /*初始时间---转化为秒 */
run_time=1; /*设定1秒显示一次*/
do /*主函数循环 */
{
gettime(&t2);
temp=t2.ti_min*60+t2.ti_sec; /*当前时间--转换为秒*/
if((temp-temp_time)>=run_time)
{
temp_time=temp;
printf("hello, word\n");
run_num++;
}
/* 主程序内的其他程序; */
}while(run_num<10);
}

以上程序通过了编译!
_石头_ 2007-09-03
  • 打赏
  • 举报
回复
你确定会给分吗?我已经被骗了很多次了!
(^_^)
等一下我把代码给你!
星羽 2007-09-03
  • 打赏
  • 举报
回复
程序一直跑着

--------

不要无限循环那用什么?
killua1213 2007-09-03
  • 打赏
  • 举报
回复
一楼的兄弟用的还是死循环,我不想用死循环,sleep函数我知道,现在主要问题是解决如何让此程序一直都调用sleep,最好有代码,:)
wo_long 2007-09-01
  • 打赏
  • 举报
回复
三种方法:
1.两个程序,一个使用sleep( )函数,在TC中参数以秒计时,在GCC中参数以毫秒计时,在sleep()后加system函数调用需要执行的另一个程序.
2.两个程序,一个使用delay( )函数,在其后加system函数调用需要执行的另一个程序.
3.使用windows计划任务
liufei1108 2007-08-31
  • 打赏
  • 举报
回复
用sleep()函数
loxnat 2007-08-31
  • 打赏
  • 举报
回复
很多种方法。。。timer。。。或者进程休眠。。。建议看看进程同步的书籍就从根本上知道了。。。
iambic 2007-08-31
  • 打赏
  • 举报
回复
典型的timer。
freshui 2007-08-31
  • 打赏
  • 举报
回复
死循环不耗时啊
操作系统就是一直在死循环 :)

不死循环那只有你的程序运行结束, 死循环状态是idle :)
hoya5121 2007-08-31
  • 打赏
  • 举报
回复
定时器,或者中断
gfxiang 2007-08-31
  • 打赏
  • 举报
回复
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
for (;;)
{
cout << "hello, word\n" << endl;
sleep(60);
}
return 0;
}

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧