LINUX.ORG.RU

Перехват вывода консольной программы в Ruby

 ,


0

1

Вызываю, значит, консольную утилиту с нужными мне параметрами. Она выполняет то, что нужно, и на этом случается затык: требуется вывод этой утилиты вставить в свою программу.
И как же это сделать? Ткните носом, пожалуйста. Гугл ничего внятного именно по Ruby не даёт, а то, что даёт, моему уму непостижимо.

где то в начале, и потом уже привычно писать puts ...

we_are = File.expand_path(File.dirname(__FILE__))
$stdout.reopen we_are + "/logs/messages-#Time.now.strftime('%d%m%Y')}.txt", 'a'
$stderr.reopen we_are + "/logs/errors-#Time.now.strftime('%d%m%Y')}.txt", 'a'

etwrq ★★★★★
()
Последнее исправление: etwrq (всего исправлений: 2)

popen4

Доеду до работы,расскажу подробнее. А пока гугли popen4.

Camel ★★★★★
()

Эта утилита куда-нибудь, выводит нужную информацию?

anonymous
()

Если тебе после завершения, то достаточно примерно такого:

#!/usr/bin/ruby
x = `date --utc`
puts x
Deleted
()

Ruby в Popen

Вот хорошая вводная статья о разных способах запуска консольных программ, в том числе там упомянуты backticks, о которых уже написал уважаемый Mystra_x64. Если нужно более интерактивное взаимодействие, считывание stderr, получение кода возврата, то смотри POpen4.

Camel ★★★★★
()

Я перед началом работы программы вызываю такое:

  $stdout.reopen('C:\stdout.log', 'w')
  $stderr = $stdout

И вывод перенаправляется в файл C:\stdout.log.

Novator ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.