当前位置: 首页 > 面试题库 >

您如何在Linux中使用C进行非阻塞控制台I / O?

丁阳炎
2023-03-14
问题内容

在C / Linux / OS X上如何不阻塞控制台IO?


问题答案:

你不是,真的。TTY(控制台)是一个非常有限的设备,您几乎不做非阻塞I / O。当你看到的东西,看起来像非阻塞I / O,说在诅咒你做什么/
ncurses的应用程序,被称为 原始I / O 。在原始I /
O中,没有字符的解释,没有擦除处理等。相反,您需要编写自己的代码来在执行其他操作时检查数据。

在现代C程序中,您可以通过将控制台I / O放入 线程 或轻量级进程来简化另一种方式。然后,I /
O可以以通常的阻塞方式进行,但是可以将数据插入队列以在另一个线程上进行处理。

更新资料

这是一个curses教程,涵盖了更多内容。



 类似资料:
  • 问题内容: 我正在尝试用Python创建一个简单的IRC客户端(这是我学习该语言时的一个项目)。 我有一个循环,可以用来接收和解析IRC服务器发送给我的内容,但是如果我使用它raw_input来输入内容,它将停止循环,直到我输入某些东西为止(显然)。 如何在不停止循环的情况下输入内容? 提前致谢。 (我认为我不需要发布代码,我只想输入一些内容,而while 1循环不会停止。) 编辑:我在Windo

  • 问题内容: 非阻塞TCP / IP S和在NIO帮我处理与小数目的线程许多TCP / IP连接。但是UDP 呢?(我必须承认我对UDP不太熟悉。) 即使UDP发送操作未在阻止模式下运行,它似乎也不会阻止。确实存在因拥堵或类似原因导致阻塞的情况吗?我真的很好奇,是否存在这样的情况以及生产环境中可能存在的情况。 如果实际上并没有阻塞,并且我不打算使用已连接并仅绑定到一个端口,那么使用非阻塞模式和and

  • 有没有办法避免java.lang.Process阻塞控制台?在我的情况下,当我执行以下代码时,我的输入在控制台中被阻止。所以我几乎再也不能输入任何东西了。我已经试过了。例如,在新线程中启动它是不起作用的。

  • 但是,这种体系结构只使用单个线程。在多进程环境中(例如4核cpu),NIO架构会浪费其他核。有没有一种设计方法,我可以使用NIO架构来利用所有的内核? NIO2(基于前体模式)就是这样一种选择。但其底层体系结构与原始的NIO非常不同。

  • 问题内容: 我有这段代码可以在Linux中从Serial读取,但是我不知道在读取SerialPort时阻塞和非阻塞之间有什么区别,在哪种情况下哪个更好? 问题答案: 您提到的代码是IMO编码和注释不当的代码。该代码不符合POSIX的可移植性惯例,如正确设置终端模式和POSIX操作系统的串行编程指南中所述。该代码没有提到它使用非规范(也称为原始)模式,并且重用了“阻塞”和“非阻塞”术语来描述 VMI

  • 现在我们知道如何在一个指定I/O调度器上来调度一个任务,我们可以修改storeBitmap()函数并再次检查StrictMode的不合规做法。为了这个例子,我们可以在新的blockingStoreBitmap()函数中重排代码。 private static void blockingStoreBitmap(Context context, Bitmap bitmap, String filena