我正在创建一个有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;
}
答案 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_create
和poll
对您来说应该足够了。
答案 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);
}
}
试一试。