gpt4 book ai didi

c++ - 使用 TCL 命令行,有没有办法停止显示字符?

转载 作者:搜寻专家 更新时间:2023-10-31 01:42:12 24 4
gpt4 key购买 nike

我正在构建一个需要输入密码的命令的工具。我想当我用密码输入这个命令时,命令行用“*”或“”替换每个字符,这样命令和密码就不会被观察到!

是否有这样的命令告诉 TCL 解释器“从这一点开始,将输入的每个字符显示为 *”,然后切换回常规模式?

任何其他建议也很有值(value)。

最佳答案

在你的情况下,你应该“完全控制”你的终端并禁用它的默认回显行为(在 UNIX 中,终端应该输入所谓的 raw 模式)然后,您可以一个接一个地读取字符(直到最大密码大小或直到按下 Enter)并为每个按下的字符回显“*”。您在 UNIX 和 Windows 上都获得了工作代码示例,这是怎么做到的 here您可能还想阅读此链接 echo-free password entry TCL wiki

proc enableRaw {{channel stdin}} {
exec /bin/stty raw -echo <@$channel
}
proc disableRaw {{channel stdin}} {
exec /bin/stty -raw echo <@$channel
}

enableRaw
set c [read stdin 1]
puts -nonewline $c
disableRaw
package require twapi
proc enableRaw {{channel stdin}} {
set console_handle [twapi::GetStdHandle -10]
set oldmode [twapi::GetConsoleMode $console_handle]
set newmode [expr {$oldmode & ~6}] ;# Turn off the echo and line-editing bits
twapi::SetConsoleMode $console_handle $newmode
}
proc disableRaw {{channel stdin}} {
set console_handle [twapi::GetStdHandle -10]
set oldmode [twapi::GetConsoleMode $console_handle]
set newmode [expr {$oldmode | 6}] ;# Turn on the echo and line-editing bits
twapi::SetConsoleMode $console_handle $newmode
}

enableRaw
set c [read stdin 1]
puts -nonewline $c
disableRaw

关于c++ - 使用 TCL 命令行,有没有办法停止显示字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27291233/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com