IO.popen (my_cmd) - когда подпроцесс сделан?

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 сделан? Что должно ??? будьте в коде, который я отправил выше?

1
задан John Dibling 11 August 2010 в 21:59
поделиться