1

我正在创建一个有 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;
}
4

2 回答 2

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对你来说应该足够了。

于 2013-11-02T21:44:54.243 回答
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);
    }
}

试试看。

于 2013-11-02T16:01:41.460 回答