вилка с Ruby 1.8 и Windows

Я использую Ruby 1.8.7 patchlevel 302 и работаю в системе Windows xp. Мне нужно запустить внешний процесс, который должен реагировать на ввод пользователя. Процесс не реагирует, если я использую потоки, поэтому я попробовал использовать fork. При использовании fork внешний процесс реагирует на ввод пользователя, но выполняет не только блок fork. Например,

fork do
  puts 'child'
end
puts 'parent'
Process.wait
puts 'done'

производит следующий вывод на моей машине:

parent
child
parent
done
done

Как вы можете видеть, «готово» и «родительский» печатаются дважды. Что я могу сделать, чтобы ребенок выполнял только свой блок, а не больше? (Я не могу переключиться на Ruby 1.9 из-за некоторых драгоценных камней)

1
задан B27 4 October 2010 в 06:37
поделиться