我的 GO 应用程序需要从管道接收它的输入,同时必须提示用户输入密码。因为我不喜欢在命令参数中设置密码,所以我想像sudo
命令一样实现它。
如果我尝试从 stdin 读取,我将收到最后一个命令输出作为密码(显然(。我也尝试使用这个库 https://github.com/howeyc/gopass 但它只能从标准读取。
有没有办法在 GO 中做到这一点?
你不能
,这与go无关。当你通过管道连接到一个程序时,你正在将一个程序的stdout定向到该程序的stdin,而不是tty(stdin通常会附加到什么(。一个程序只获得一个 stdin,因此您不能同时接收从另一个程序的输出通过管道传输的输入,以及从用户的 tty 接收输入。