2017-08-10 51 views
0

我正在编写一个C程序,该程序需要在程序执行期间隐藏用户键入的字符。例如,当运行以下循环时,控制台显示闪烁的光标(这很好)。但是,当用户在键盘上键入键时,这些键将被回显到控制台。为了形象化的更好:在程序执行期间从回显输入中停止Linux控制台

第1步:启动程序

[email protected]:/home/root# ./program 
_ 

第2步:用户类型的某些字符(即使他不应该)

[email protected]:/home/root# ./program 
AdajfsaSJ_ 

字符得到呼应的安慰。我怎样才能阻止呢?我知道这在理论上是可行的,但我无法找到如何实施它。


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

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

+0

使用['termios()'](http://man7.org/linux/man-pages/man3/termios.3.html)关闭'ECHO'标志。 – Barmar

+0

感谢@Barmar,那就是我一直在寻找的东西。如果你把它写成答案,我很乐意将其标记为正确的。另外,你知道是否可以隐藏闪烁的光标吗? – travisjayday

回答

1

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

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