关于原始和煮熟的终端模式的灌注?

问题描述 投票:0回答:1
a server

。我应该修改行为,以便收到另一个聊天消息时提示向下移动

(即,通过打印
\b
删除提示,打印消息,然后重新删除,将消息打印为“上方”提示。打印提示)。 
我们获得了测试此功能的一个test client
test server

,当前用户有提示,但没有输入任何内容时,他们可以接收其他用户的消息。当他们开始键入时,缓冲区直到输入整个消息并点击Enter之前才齐平。 我应该复制这种行为,但是我对原始模式的实际方式非常困惑。

有人可以告诉我如何通过原始模式控制输入/输出,或者为什么上述测试程序的行为是从使用原始模式出现的?

	
toby默认情况下,Unix风格的TTY(即控制台)驱动程序将在“烹饪模式”中输入。 在此模式下,它提供了一定数量的命令行编辑。 用户可以输入输入行,可能会删除和重新测试其中的某些(但这并不总是可行),并且该程序在用户命中率Enter之前不会看到它。
这可能会回到通过串行线连接到计算机的硬件终端的日子。如果终端处理一些低级编辑,则无需计算机。  它还为琐碎的C程序免费提供了一些基本的输入编辑。

在对比中,
RAW模式

设置了TTY驱动程序,以将每个字符传递给程序时。 默认情况下,程序(在Unixish操作系统上)以烹饪模式启动,并且需要启用RAW模式。

如何在操作系统之间差异很大,尽管Posix如今已标准化了这些东西。 在Linux上,您可以阅读文档的“ termios”和“ tty_ioctl”人页。 基本上,您将获得包含TTY设置的数据结构,修改您关心的部分(特别是启用原始模式),然后将其传递回。 其他可能性是仅使用ncurses库。 它为您抽象所有这些东西。

在原始模式下,字符直接传递给您的程序。例如,当您以煮熟的模式输入终端时,您键入的字符会立即在屏幕上回荡。在原始模式下,字符被终端忽略(即,不呼应),您的程序具有是否要回声的option

Edit:Wikipedia在熟书模式上有一篇很好的文章。
c io terminal
1个回答
29
投票
另外,请注意,在原始模式下,即使

<Backspace>

和类似字符直接交给您的程序。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.