确保程序仅运行N秒

时间:2016-10-01 20:07:28

标签: c time timer

我需要指定程序在N秒后结束。我认为这意味着将整个程序封装在某种while循环中,但我无法弄清楚具体细节。怎么会这样做?

举一个非常简单的例子,假设我希望它能够运行

printf("Hello world\n");

持续N秒

1 个答案:

答案 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操作,则线程终止可能需要一段时间,因为此时线程未处于活动状态)