【发布时间】:2011-09-19 01:56:31
【问题描述】:
我正在尝试使用 select() 来读取键盘输入,但我被困在我不知道如何从键盘读取并使用文件描述符来做到这一点。我被告知使用 STDIN 和 STDIN_FILENO 来解决这个问题,但我仍然感到困惑。
我该怎么做?
【问题讨论】:
-
如果您不熟悉一般的 POSIX 编程,这是一件相当棘手的事情。一方面,您必须设置终端模式,以便设备不会缓冲接收到的字符。
-
不需要使用 select( ),当然,除非它是家庭作业的一部分。您可以只读取(STDIN ...)或读取(STDIN_FILENO ...)。
-
如果您需要完全的终端控制(按键等),那么使用 ncurses 之类的终端库可能会好多 (也有 Windows 端口)。
-
Pete Wilson:如果消息在用户按下键之前到达套接字,fread(stdin ...) 不会像 select 那样快速返回。在 Linux 中,我使用了 select。在 Windows 中更难。
-
你能澄清一下为什么你需要去选择来阅读键盘输入吗?通常,当您需要从一系列描述符或输入中读取数据时,应使用 select 调用,因为它允许程序监视多个文件描述符,等待一个或多个文件描述符为某种 I/O 操作“准备好” (例如,可以输入)。
标签: c keyboard stdin textinput select-function