pipe = IO.popen("my_cmd 2>&0")
while ???
line = pipe.gets
puts line if some_condition
end
Это использует Ruby 1.8.7 в Windows. my_cmd
приложение, которое печатает записи базы данных на stdout. Одна строка для каждой базы данных записывает, и нет никакого способа знать сколько записей, там будет, прежде чем я выполню команду. Каждый gets
назовите возвраты одной записью. Каждый gets
вызов мог требовать времени, также. Это пробегается через сеть к очень большой базе данных, таким образом, добирается, вызов не будет мгновенен.
Я обрабатываю вход очень хорошо. Проблема, цикл никогда не заканчивается.
my_cmd
завершается, когда это достигает конца базы данных. Как мой сценарий Ruby знает когда my_cmd
сделан? Что должно ???
будьте в коде, который я отправил выше?
Либо
while !out.eof?
, либо когда вы
Process.wait pipe.pid
http://en.wikibooks.org/ wiki / Ruby_Programming / Running_Multiple_Processes