我需要指定程序在N秒后结束。我认为这意味着将整个程序封装在某种while循环中,但我无法弄清楚具体细节。怎么会这样做?
举一个非常简单的例子,假设我希望它能够运行
行printf("Hello world\n");
持续N秒
答案 0 :(得分:2)
这个愚蠢的代码在至少3秒内打印hello world
#include <stdio.h>
#include <time.h>
int main()
{
time_t start_timer = time(NULL);
while(1)
{
printf("Hello world\n");
if (time(NULL)-start_timer > 3)
{
break;
}
}
return 0;
}
当然,如果不是只打印一条消息,程序执行了大量的计算/输入/输出操作/网络操作,可能需要3秒以上的时间。
在这种情况下,正如相关评论所暗示的那样,创建一个“观察”线程并在计算的同时检查时间流逝会更好(但更复杂,因此必须有必要)(使用cpu-被动时间等待机制,以避免吃掉100%的CPU),如果花费太长时间就会杀死计算线程。
(请注意,如果正在进行大I / O操作,则线程终止可能需要一段时间,因为此时线程未处于活动状态)