这里我有一个功能,它是监听模式。这个函数列出了我从某些设备中得到的东西。
这时当我的函数处于侦听模式时,我想创建超时。如果我不会从特定设备得到任何响应,而不是我想退出此功能并且必须通知。
如果在此超时期限内,如果我将从设备获得响应,而不是我必须继续工作并停止此超时,并且在任何持续时间内完成此工作没有限制。
那我怎么能为一个函数实现这个呢。
我可以帮助我用超时功能实现这个功能。
答案 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
。您可以设置或禁用在一段时间过后将发送到您的应用程序的信号。