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. Может кто-нибудь рассказать мне больше об этом? Спасибо

0 ответов

Другие вопросы по тегам