我在pry中有一些这样的代码:
[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>]
在命令行中使用multichain。 虽然上面的工作很好,但下一部分不起作用:
[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运行multihaind时,我得到了下一个输出:
$ 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挂起?谢谢,
编辑:
Tin Man告诉我这个问题不是关闭STDIN,但我相信Open3.capture3
会自动关闭STDIN。在Open3.popen3
完成之后,问题出在STDOUT上。
有人能告诉我更多关于这个的事吗?感谢