【发布时间】:2014-06-02 23:29:20
【问题描述】:
我正在使用select 从套接字和 STDIN 进行非阻塞读取。在伪代码中:
loop
readable = select(socket, STDIN)
foreach input in readable
if input == STDIN
handle_keyboard_input(read(STDIN))
else
handle_socket_input(read(socket))
上面的效果很好。但现在我想开始使用 libncurses 来构建更复杂的基于文本的 UI。 (我可能会有两个窗口:一个大的日志窗口和一个用于提示的小窗口。)
大概,套接字处理将保持不变。但我不清楚 libncurses 如何抽象出 STDIN。在 libncurses 窗口中进行非阻塞读取的正确习惯用法是什么?
事实上,这是在 Ruby 中,但我只是在 C API 周围使用瘦包装器,所以我觉得这更适合标记为 C 问题。
【问题讨论】:
-
没什么特别的。只需将
STDIN_FILENO添加到您的选择集即可。