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

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

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

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

那么我该如何为一个函数实现这个function呢。

请问我可以帮助我实现具有超时function的这个东西。

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

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

 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()的实现将取决于您。