gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:07:59 25 4
gpt4 key购买 nike

我有一个 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");
}

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

谢谢

最佳答案

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

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

关于C - 返回字符串的函数超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33914865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com