【问题标题】:Stopping Linux console from echoing input during program execution在程序执行期间停止 Linux 控制台回显输入
【发布时间】:2017-08-10 01:13:59
【问题描述】:

我正在编写一个 C 程序,该程序需要在程序执行期间从屏幕上隐藏用户键入的字符。例如,当运行以下循环时

while (1)
{ 
    //do some work
}

控制台显示闪烁的光标(这很好)。但是,当用户在键盘上键入键时,这些键会被回显到控制台。为了更好地可视化它:

第 1 步:启动程序

root@debian:/home/root# ./program
_

第 2 步:用户输入一些字符(即使他不应该)

root@debian:/home/root# ./program
AdajfsaSJ_

字符在控制台上得到回显。我怎样才能阻止这个?我知道这在理论上是可能的,但我不知道如何实现它。


如果您需要一个更好的示例来实现我想要实现的目标,请在空串行端口上使用 screen 命令。 screen /dev/tty30 例如。这会清空控制台并运行程序,但是,用户无法输入任何字符(有一个闪烁的白色光标块,并且没有键盘字符回显到控制台)。这就是我需要的。

任何见解都会有所帮助,谢谢!

【问题讨论】:

  • 使用termios() 关闭ECHO 标志。
  • 谢谢@Barmar,这就是我一直在寻找的。如果您将其写为答案,我很乐意将其标记为正确答案。另外,你知道是否可以隐藏闪烁的光标吗?

标签: c linux input console


【解决方案1】:

使用termios()关闭终端的ECHO标志。

要关闭文本光标,请使用termcap 库来控制光标的可见性。

【讨论】:

    猜你喜欢
    • 2018-08-02
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多