我正在尝试运行程序trezorctl,通过创建一个运行命令的进程,在Trezor设备旁边签署一个用Java构建的Qtum事务。运行后,您通常需要在确认交易之前输入您的 PIN。ProcessBuilder
trezorctl sign-tx <name_of_file>.json
我BufferedWriter(OutputStreamWriter(proc.getOutputStream()))
通过调用write(pin)
, then newLine()
, then将 PIN 输入到进程中flush()
。通过 Intellij 运行程序时,这适用于 Linux 和 Mac,但是当我构建 jar 文件并运行它时,它不会。trezorctl
没有收到输入,我的程序在下一个挂起stdInput.next()
。在 Windows 上,这种行为也会在 Intellij 上发生。
为什么它会在一种情况下工作而不是另一种情况,即使在同一个操作系统中?当我在 Windows 上手动运行命令行应用程序时,它适用于 cmd,但不适用于 Git bash,表现出类似的行为。我不知道这是否重要,但trezorctl
屏蔽了输入,因此您看不到 PIN,这会影响吗?我也试过用 运行我的程序sudo
,所以我认为这不是权限问题。