Подтвердить что ты не робот

Может ли доступ к Ruby получить из команд оболочки, когда он появляется?

My Ruby script запускает команду оболочки и анализирует вывод из нее. Однако, кажется, команда сначала выполняется, а вывод сохраняется в массиве. Я хотел бы иметь доступ к выходным линиям в режиме реального времени так же, как они печатаются. Я играл с нитками, но у меня не получилось работать. Любые предложения?

4b9b3361

Ответ 1

Вы ищете трубы. Вот пример:

# This example runs the netstat command via a pipe
# and processes the data in Ruby as it come back

pipe = IO.popen("netstat 3")
while (line = pipe.gets)
  print line
  print "and"
end

Ответ 2

При вызове методов/функций для запуска команд системы/оболочки ваш интерпретатор запускает другой процесс для его запуска и ждет его завершения, затем выдаст вам результат.

Даже если вы используете потоки, единственное, что вы выполнили, это не позволить вашей программе висеть во время выполнения команды, но вы все равно не получите результат до его завершения.

Я думаю, вы можете сделать это с помощью труб, но я не уверен, как это сделать.

@Марсель получил его.