Linux在设置定时器功能方面存在问题

时间:2013-11-02 15:44:56

标签: c linux

我正在创建一个有2个孩子的过程,其中1个孩子负责阅读问题(从文件中逐行),输出每个问题并阅读答案,另一个负责测量经过的时间和每隔1分钟通知用户剩余时间。我的问题是我找不到任何有用的例子,说明我如何使这个设定时间功能起作用。这是我到目前为止所尝试的。问题是它每次输出相同的经过时间,并且永远不会从循环中退出。

#include<time.h>
#define T 600000

int main(){
  clock_t start, end;
  double elapsed;
  start = clock();
  end = start + T;
  while(clock() < end){
     elapsed = (double) (end - clock()) / CLOCKS_PER_SEC;
     printf("you have %f seconds left\n", elapsed);
     sleep(60);
  }
  return 0;
}

2 个答案:

答案 0 :(得分:2)

正如我评论的那样,您应该阅读time(7)手册页

请注意clock(3)衡量处理器时间,而不是真实时间。 我建议将clock_gettime(2)CLOCK_REALTIME(或许CLOCK_MONOTONIC)一起使用。另请参阅localtime(3)strftime(3)。 另外timer_create(2),特定于Linux的timerfd_create(2)poll(2)等...另请阅读Advanced Linux Programming

如果您敢于使用信号,请仔细阅读signal(7)。但timerfd_createpoll对您来说应该足够了。

答案 1 :(得分:0)

这是一些似乎有用的简单方法:

#include <stdio.h>
#define TIME    300

int main()
{
    int i;

    for (i=TIME; i > 0; i--)
    {
            printf("You have [%d] minutes left.\n", i/60);
            sleep(60);
    }
}

试一试。