【发布时间】:2011-04-20 16:13:03
【问题描述】:
我正在使用 ruby 1.8.7 补丁级别 302,并且正在使用 Windows xp 系统。 我必须启动一个需要对用户输入做出反应的外部进程。如果我使用线程,该过程不会做出反应,所以我尝试使用 fork。使用 fork,外部进程会对用户输入做出反应,但它执行的不仅仅是 fork 块。例如
fork do
puts 'child'
end
puts 'parent'
Process.wait
puts 'done'
在我的机器上产生以下输出:
parent
child
parent
done
done
正如你所见,'done' 和 'parent' 被打印了两次。我该怎么做才能让孩子只执行它的块而不是更多? (由于一些 gem,我无法切换到 Ruby 1.9)
【问题讨论】:
-
你在使用 cygwin ruby 吗?叉子是如何工作的?
-
分叉是如何工作的?你在使用 win32 库吗?
-
您需要 win32 进程 gem。在 ruby 1.8.7 上,您需要 0.6.6 版(至少对于 Windows 8)