C-重新返回字符串的函数超时

C-重新返回字符串的函数超时,c,select,timeout,C,Select,Timeout,我有一个C代码,它向卡发送请求,然后存储卡的响应并打印。 要存储return命令,我使用: char * returnCommand = Cmd_Debug_GetResponse(); 没问题。 我的问题是,当我想设置此响应的超时时。如果函数Cmd_Debug_GetResponse在5秒内没有返回任何内容,我希望程序继续执行下一行 我尝试以这种方式使用select,但效果不佳: 我只写了有趣的部分 fd_set input_set; struct timeval timeout; int

我有一个C代码,它向卡发送请求,然后存储卡的响应并打印。 要存储return命令,我使用:

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 : %s\n", returnCommand);
} else {
    printf("5 secs are over\n");
}
代码总是在超时时循环。。。 有人能告诉我哪里出了问题,怎么办

感谢

选择功能允许程序监视多个文件描述符,等待一个或多个文件描述符准备好进行某种类型的I/O操作,例如可能的输入。在代码中,没有打开任何文件描述符。你使用了错误的功能和目的

要解决您的问题,您可以使用计时器。请参阅该链接:

select与文件描述符一起使用。在何处以及如何打开I/O?您确定I/O FD为0吗?根据答案,选择显然不是正确的解决方案。我现在正在寻找另一种方法。好的,我知道我错在哪里了。但是你有没有关于如何使用timer_create的简单代码?给出的示例对我来说不是很清楚。您可以尝试创建一个简单的代码进行测试。如果你有问题,你可以问我。我认为这个链接中的例子很简单