我正在使用ruby1.8.7 patchlevel 302,我正在使用Windows XP系统。 我必须开始一个需要对用户input做出反应的外部过程。 如果我使用线程,进程不会反应,所以我尝试使用fork。 对于fork,外部进程会对用户input做出反应,但它不仅仅执行fork块。 例如
fork do puts 'child' end puts 'parent' Process.wait puts 'done'
在我的机器上产生以下输出:
parent child parent done done
正如你所看到的“完成”和“父母”打印两次。 我可以做些什么来使孩子只执行其块,而不是更多? (由于一些gem我不能切换到Ruby 1.9)
Linux叉子的目的?
分叉和PID
使用Process.spawn作为Process.fork的替代品
Linux,分叉进程立即挂起
spawn和fork有什么区别?
问题与fork()
使用PHP在Windows中进行应用程序线程化
WEXITSTATUS(状态)返回什么?
什么是叉返回?
subprocess打印错误ppid()
像那样:
if child = fork puts 'parent' Process.wait puts 'done' else puts 'child' end
我发现了一个小小的临时工。 它的工作原理是当我在子块的末尾添加Process.kill(1,0)时。 但我认为这不是最好的解决方案。 所以如果有人知道一个真正的解决方案,我仍然会很高兴。
我想你只需要Process.exit! 在你结束之前。
fork do puts 'child' Process.exit! end puts 'parent' Process.wait puts 'done'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。