我有一些像这样的代码在撬:
[1] pry(main)> require 'open3'
=> true
[2] pry(main)> output, error, status = Open3.capture3("multichain-util create testchain")
=> ["MultiChain utilities build 1.0 alpha 20 protocol 10005\n\nBlockchain parameter
set was successfully generated.\nYou can edit it
in /home/me/.multichain/testchain/params.dat before running multichaind for the first
time.\n\nTo generate blockchain please run \"multichaind testchain -daemon\".\n",
"",
#<Process::Status: pid 13944 exit 0>]
它在命令行中使用多链。虽然上面的效果很好,但下一部分不起作用:
[3] pry(main)> output, error, status = Open3.capture3("multichaind testchain -daemon")
^CInterrupt:
from /home/me/.rbenv/versions/2.3.0/lib/ruby/2.3.0/open3.rb:271:in `value'
我等了很长时间,但它永远不会返回任何东西,直到我用 ctrl-C 打断它。
multichaind -daemon
不等待任何其他输入。
当我从 bash 运行 multichaind 时,我得到下一个输出:
$ multichaind testchain -daemon
MultiChain Core Daemon build 1.0 alpha 20 protocol 10005
MultiChain server starting
Looking for genesis block...
Genesis block found
New users can connect to this node using
multichaind testchain@192.168.100.102:2681
Node started
并退出。有谁知道为什么 capture3 挂起?谢谢,
编辑:铁皮人告诉我这个问题是关于不关闭标准输入,但我相信会Open3.capture3
自动关闭标准输入。在我完成之后Open3.popen3
,问题出在 STDOUT 上。有人能告诉我更多吗?谢谢