在C / Linux / OS X上如何不阻塞控制台IO?
你不是,真的。TTY(控制台)是一个非常有限的设备,您几乎不做非阻塞I / O。当你看到的东西,看起来像非阻塞I / O,说在诅咒你做什么/ ncurses的应用程序,被称为 原始I / O 。在原始I / O中,没有字符的解释,没有擦除处理等。相反,您需要编写自己的代码来在执行其他操作时检查数据。
在现代C程序中,您可以通过将控制台I / O放入 线程 或轻量级进程来简化另一种方式。然后,I / O可以以通常的阻塞方式进行,但是可以将数据插入队列以在另一个线程上进行处理。
这是一个curses教程,涵盖了更多内容。