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

问题描述 投票:0回答:1

我有一个 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 : %s\n", returnCommand);
} else {
    printf("5 secs are over\n");
}

代码总是在超时时循环... 有人可以告诉我出了什么问题以及该怎么办吗?

谢谢

c timeout posix-select
1个回答
0
投票

select()
函数允许程序监视多个文件描述符,等待一个或多个文件描述符为某一类 I/O 操作(例如,可能的输入)“准备好”。在您的代码中,没有打开文件描述符。你使用了错误的功能和目的

要解决您的问题,您可以使用计时器。请参阅该链接: http://man7.org/linux/man-pages/man2/timer_create.2.html

© www.soinside.com 2019 - 2024. All rights reserved.