来自单独线程的Kernel.system

时间:2011-07-15 19:05:59

标签: ruby multithreading subprocess sleep

更新:这似乎是由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

0 个答案:

没有答案