gpt4 book ai didi

c - 如何使用 select() 从 C 中的键盘读取输入

转载 作者:太空狗 更新时间:2023-10-29 16:53:50 30 4
gpt4 key购买 nike

我正在尝试使用 select() 来读取键盘输入,但我陷入了困境,因为我不知道如何从键盘读取并使用文件描述符来这样做。有人告诉我使用 STDIN 和 STDIN_FILENO 来解决这个问题,但我仍然感到困惑。
我该怎么做?

最佳答案

你的问题听起来有点困惑。 select() 用于阻塞直到输入可用。但是您使用普通的文件读取函数(如 readfreadfgetc 等)进行实际读取。

这是一个简单的例子。它会阻塞,直到 stdin 至少有一个字符可供读取。但是当然,除非您将终端更改为某种原始模式,否则它会一直阻塞,直到您按下回车键,此时键入的任何字符都会被刷新到文件缓冲区(来自某个终端缓冲区)。

#include <stdio.h>
#include <sys/select.h>

int main(void) {
fd_set s_rd, s_wr, s_ex;
FD_ZERO(&s_rd);
FD_ZERO(&s_wr);
FD_ZERO(&s_ex);
FD_SET(fileno(stdin), &s_rd);
select(fileno(stdin)+1, &s_rd, &s_wr, &s_ex, NULL);
return 0;
}

关于c - 如何使用 select() 从 C 中的键盘读取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6418232/

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