热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

如何防止输入被冲刷成输出?

如何解决《如何防止输入被冲刷成输出?》经验,为你挑选了1个好方法。

我在Ubuntu上。当我ghci在终端上运行并执行以下操作时:

Prelude Control.Monad System.IO> forever $ getChar >>= print

结果是这样的:

a'a'
b'b'
C'C'
%'%'
\'\\'
1'1'
''\''
"'"'
^X'\CAN'
^?'\DEL'
^CInterrupted.

也就是说,我在键盘上输入的字符将被刷新到输出中。我怎样才能避免这种情况,只能print以作家的身份出现?



1> 4castle..:

为防止输入刷新到输出中(或“回显”),请使用hSetEcho stdin False

Prelude> import System.IO
Prelude System.IO> import Control.Monad
Prelude System.IO Control.Monad> hSetEcho stdin False
Prelude System.IO Control.Monad> forever $ getChar >>= print
'a'
'\n'
'b'
'c'

这可以用来做类似读密码的事情。


推荐阅读
author-avatar
小文982_412
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有