C 按时间执行函数

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;

我试图为每一分钟要执行的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;
}

你的启动程序如何? 我的意思是你的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)。