Есть ли способ синхронизировать это? - PullRequest
1 голос
/ 26 октября 2010

Есть ли синхронизированный exec в ruby? Я пробую следующий код, и когда я открываю файл, я ничего не получаю, и это, вероятно, потому, что exec не заканчивает писать файл.

exec "sort data.txt > data.sort"
File.foreach("data.sort") { |line| puts line}

Тед

Ответы [ 2 ]

4 голосов
/ 26 октября 2010

Вы искали system, а не exec.Однако это намного проще, чем при использовании обратных галочек, которые возвращают вывод команды.

puts `sort data.txt`

Если вам нужно выполнить итерацию, вы можете выполнить итерацию по возвращаемому значению напрямую:

sorted = `sort data.txt`
sorted.each do |line|
  puts line
end

или даже:

`sort data.txt`.each do |line|
  puts line
end
3 голосов
/ 26 октября 2010

exec заменяет текущий процесс на тот, который вы выполняете;ничего после exec не запускается вообще!Вы, вероятно, хотите system вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...