微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用Ruby 1.8和Windows分叉

我正在使用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] 举报,一经查实,本站将立刻删除。

相关推荐