Ruby 1.9.2中Process.fork和Process.spawn之间的区别是什么

Vin*_*ent 32 ruby ruby-on-rails process ruby-1.9

Process.fork与Ruby 1.9.2中的新Process.spawn方法有什么区别,哪一个更好地在子进程中运行另一个程序?据我所知,Process.fork接受代码块,Process.spawn接受系统命令加上一些其他参数.当我应该使用一个而不是另一个?

sep*_*p2k 47

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

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

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

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

据我所知,Process.fork接受代码块,Process.spawn接受系统命令加上一些其他参数.

究竟.

当我应该使用一个而不是另一个?

使用fork,如果你需要在一个单独的进程中运行任意Ruby代码(你不能做到这一点与spawn).使用spawn,如果你需要调用一个子进程的应用程序.