Kernel.system из отдельного потока - PullRequest
0 голосов
/ 15 июля 2011

Обновление: похоже, это вызвано перемещением rvm с одной машины на другую без перекомпиляции - я не мог воспроизвести проблему в другом месте.Я не буду удалять вопрос, поскольку у кого-то может возникнуть подобная проблема.Спасибо всем за помощь!

Я пытаюсь запустить внешний процесс из отдельного потока, например:

def run
  Thread.new do
    Kernel.system('echo run')
  end
end

loop do
  puts 'loop begin'
  run
  sleep 5
  puts 'loop end'
end

Хотя echo работает успешно, основной поток, похоже, застрялна sleep на неопределенный срок.Если я заменю Kernel.system вызов на puts 'run', все будет нормально.

Есть идеи, почему это не работает?

Редактировать: Проблема возникает на моем локальном компьютере:

uname -a
Linux reportinghp 2.6.38-8-generic-pae #42-Ubuntu SMP Mon Apr 11 05:17:09 UTC 2011 i686 i686 i386 GNU/Linux

но не по другому:

uname -a
Linux asd 2.6.18-128.el5 #1 SMP Wed Jan 21 10:41:14 EST 2009 x86_64 x86_64 x86_64 GNU/Linux
...