Ruby 1.9.2 中 Process.fork 和 Process.spawn 有什么区别

发布于 2024-10-01 02:18:07 字数 152 浏览 0 评论 0原文

Process.fork 和 Ruby 1.9.2 中新的 Process.spawn 方法有什么区别?哪一个更适合在子进程中运行另一个程序?据我了解 Process.fork 接受代码块,而 Process.spawn 接受系统命令和一些其他参数。我什么时候应该使用其中一种而不是另一种?

What's the difference between Process.fork and the new Process.spawn methods in Ruby 1.9.2 and which one is better to run another program in a subprocess? As far as I understand Process.fork accepts block of code and Process.spawn takes a system command plus some other parameters. When I should use one instead of the other?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

归属感 2024-10-08 02:18:07

Ruby 1.9.2 中的 Process.fork 和新的 Process.spawn 方法有什么区别

Process.fork 允许您在另一个进程中运行 ruby​​ 代码。 Process.spawn 允许您在另一个进程中运行另一个程序。基本上,Process.spawn 就像使用 Process.fork,然后在分叉进程中调用 exec,只不过它为您提供了更多选项。

在子进程中运行另一个程序哪个更好?

如果您需要向后兼容,请使用 fork + exec,因为 spawn 在 1.8 中不可用。否则请使用 spawn,因为在子进程中运行另一个程序正是 spawn 的用途。

据我了解,Process.fork 接受代码块,而 Process.spawn 接受系统命令和一些其他参数。

确切地。

什么时候我应该使用其中一种而不是另一种?

如果您需要在单独的进程中运行任意 ruby​​ 代码,请使用 fork(您不能使用 spawn 来做到这一点)。如果您需要在子进程中调用应用程序,请使用 spawn

What's the difference between Process.fork and the new Process.spawn methods in Ruby 1.9.2

Process.fork allows you to run ruby code in another process. Process.spawn allows you to run another program in another process. Basically Process.spawn is like using Process.fork and then calling exec in the forked process, except that it gives you more options.

and which one is better to run another program in a subprocess?

If you need backwards compatibility, use fork + exec as spawn is not available in 1.8. Otherwise use spawn since running another program in a subprocess is exactly what spawn is made for.

As far as I understand Process.fork accepts block of code and Process.spawn takes a system command plus some other parameters.

Exactly.

When I should use one instead of the other?

Use fork if you need to run arbitrary ruby code in a separate process (you can't do that with spawn). Use spawn if you need to invoke an application in a subprocess.

花伊自在美 2024-10-08 02:18:07

我相信 Process.Fork 分叉当前进程,而 Process.Spawn 生成一个新进程。他们是完全不同的。你想要一个新线程还是一个新进程?

I believe Process.Fork forks the current process, and Process.Spawn spawns a new process. They are quite different. Do you want a new thread or a new process?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文