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