Open3.capture3 висит без каких-либо выходов
У меня есть несколько кодов, как это в 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>]
который использует мультицепь в командной строке. Хотя вышеперечисленное работает хорошо, следующая часть не работает:
[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
не ждет других входов.
Я получаю следующий вывод, когда я запускаю multichaind из bash:
$ 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 зависает? Спасибо,
РЕДАКТИРОВАТЬ: оловянный человек сказал мне, что эта проблема не о закрытии STDIN, но я считаю, что Open3.capture3
автоматически закрывает STDIN. И после того, как я сделал это в Open3.popen3
, проблема была о STDOUT. Может кто-нибудь рассказать мне больше об этом? Спасибо