想要在C中实现一个函数的超时

时间:2012-01-31 04:26:36

标签: c

这里我有一个功能,它是监听模式。这个函数列出了我从某些设备中得到的东西。

这时当我的函数处于侦听模式时,我想创建超时。如果我不会从特定设备得到任何响应,而不是我想退出此功能并且必须通知。

如果在此超时期限内,如果我将从设备获得响应,而不是我必须继续工作并停止此超时,并且在任何持续时间内完成此工作没有限制。

那我怎么能为一个函数实现这个呢。

我可以帮助我用超时功能实现这个功能。

2 个答案:

答案 0 :(得分:3)

根据您等待此设备的响应方式,您的问题的答案会有所不同。基本框架是:

int do_something_with_device()
{
    if (!wait_for_response_from_device()) {
        return TIMEOUT_ERROR;
    }
    // continue with processing
}

至于如何实施wait_for_response_from_device(),每个设备都不同。如果您使用的是套接字或管道,请使用select()。如果您正在与需要忙等待循环的东西连接,它可能看起来像:

int wait_for_response_from_device()
{
    time_t start = time(NULL);
    while (time(NULL) - start < TIMEOUT) {
        if (check_device_ready()) {
            return 1;
        }
    }
    return 0;
}

当然,check_device_ready()的实施将取决于您。

答案 1 :(得分:2)

看看man 2 alarm。您可以设置或禁用在一段时间过后将发送到您的应用程序的信号。