我有一个C代码,它向卡发送请求,然后存储卡的响应并打印。要存储返回命令,我使用:
char * returnCommand = Cmd_Debug_GetResponse();
没问题。我的问题是当我想设置此响应的超时时。如果函数"Cmd_Debug_GetResponse()"在5秒内没有返回任何内容,我希望程序继续执行下一行。
我尝试以这种方式使用select(),但没有得到好的结果:(我只写了有趣的部分)
fd_set input_set;
struct timeval timeout;
int ready_for_reading = 0;
FD_ZERO(&input_set);
FD_SET(0, &input_set);
timeout.tv_sec = 5;
timeout.tv_usec = 0;
ready_for_reading = select(1, &input_set, NULL, NULL, &timeout);
if(ready_for_reading)
{
char * returnCommand = Cmd_Debug_GetResponse();
printf("OK : %sn", returnCommand);
} else {
printf("5 secs are overn");
}
代码总是在超时时循环。。。有人能告诉我哪里出了问题,该怎么办吗?
感谢
select()
函数允许程序监视多个文件描述符,等待一个或多个文件描述符为某类I/O操作"准备就绪"(例如,可能的输入)。在您的代码中,没有打开任何文件描述符。您使用了错误的功能和目的
要解决您的问题,您可以使用计时器。请查看该链接:http://man7.org/linux/man-pages/man2/timer_create.2.html