C 按时间执行函数
我试图为每一分钟要执行的execute_func函数创建一种方法 我尝试在几分钟内循环,但函数从未在函数下方执行C 按时间执行函数,c,C,我试图为每一分钟要执行的execute_func函数创建一种方法 我尝试在几分钟内循环,但函数从未在函数下方执行 void main(void) { time_t timer; struct tm* tmr; timer = time(NULL); tmr = localtime(&timer); if (tmr->tm_min == 1) execute_func(); } return;
void main(void) {
time_t timer;
struct tm* tmr;
timer = time(NULL);
tmr = localtime(&timer);
if (tmr->tm_min == 1)
execute_func();
}
return;
}
你的启动程序如何? 我的意思是你的main函数调用execute\u func,函数execute\u func再次调用main。真奇怪 如果你只是想做一些定期的工作。您可以将这些作业放入另一个非主要功能中。您可以同时使用任何延迟功能
void PeriodicJob()
{
xxx;
}
main()
{
for (;;)
{
Sleep(60000); // You can use this function on windows platform. Notice that you must include windows.h first.
// Or you can write your own delay function too.
PeriodicJob();
}
return 0;
}
如果你想定期运行一个程序。这是操作系统的工作。尝试在操作系统上使用任务调度。在linux系统上,系统调用就可以了。下面是每一分钟执行一段代码或调用一个函数的示例:
while(true)
{
system("sleep 60s");
computeAFunction(); /* The function that you want to execute after every one minute */
if( (true ) /* some code that you want to execute */
{
exit(0); /* if true exit */
}
else
{
continue; /* or else keep running */
}
}
我个人使用过这个,当我想继续计算一个随着时间推移而变化的特定值时,所以我必须对新计算的值做出决定。
您可以根据自己的需要对其进行一些修改
或者,您可以在windows系统上使用windows.h头文件中定义的sleep()函数,在linux上使用unistd.h中定义的函数
sleep(1000)等于sleep 1s。您正在从函数中回调
main
??在活动CPU循环中测试0到59之间的值?真奇怪。提示:哪个函数调用您的execute\u func
?这将是main
,因此您在没有基本情况的情况下递归调用main
。tmr->tm_min
在0和59之间,因此为什么要循环?请发布显示问题的,这不是对代码的幻想。您用localtime()
填充tmr
结构一次,但在循环中,您只需将tm_min
与从0到59的所有数字进行比较,其中一个总是成功的。这根本不需要时间,所以您只需要不断地调用函数。你真的需要等待。例如,类似于睡眠(60)。