根据时间执行功能

时间:2017-03-31 19:53:07

标签: 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;
}

2 个答案:

答案 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。