我正在尝试为每一分钟创建一个执行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;
}
答案 0 :(得分:0)
你的创业常规怎么样? 我的意思是你的main函数调用execute_func,函数execute_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;
}
如果要定期运行程序。这是您的操作系统的工作。尝试在您的操作系统上使用任务计划。
答案 1 :(得分: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头文件和linux上的unistd.h中定义的sleep()函数。
sleep(1000)等于sleep 1s。