プロセスのフォークとスポーンの違いは何ですか?


ベストアンサー

スポーンとは、別のプロセスを開始してから、スポーンを実行したプロセスを続行することです。

フォークは、スポーンに使用できる特定のUnix / Posixメカニズムです。フォークは、同じプロセスの2つのほぼ同一のバージョンを生成します。プロセスがオリジナルバージョンかフォークバージョンかを判断できるため、「ほぼ」。彼らはできたその後、彼らがどのインスタンスであるかについての知識に応じてさまざまなことを実行しますが、最も一般的なことは、すぐにいずれかを取得することです。インスタンスを別のプロセスに置き換えて、スポーンと同じ効果を生み出します。ただし、それを行う必要はありません-両方のタスクのロジックを含めることができます 1つのプロセスで。

回答

Process.forkを使用すると、別のプロセスでrubyコードを実行できます。 Process.spawnを使用すると、別のプロセスで別のプログラムを実行できます。基本的に、Process.spawnは、Process.forkを使用してから、フォークされたプロセスでexecを呼び出すのと似ていますが、より多くのオプションが提供される点が異なります。

そして、サブプロセスで別のプログラムを実行するのに適しているのはどれですか?

下位互換性が必要な場合は、1.8ではspawnを使用できないため、fork + execを使用してください。それ以外の場合は、サブプロセスで別のプログラムを実行することがスポーンの目的であるため、スポーンを使用します。

私が理解している限り、Process.forkはコードのブロックを受け入れ、Process.spawnはシステムコマンドとその他のいくつかのパラメーターを受け取ります。

その通りです。

どちらを使用する必要があるのですか?

別のプロセスで任意のRubyコードを実行する必要がある場合はforkを使用します(spawnでは実行できません)。サブプロセスでアプリケーションを呼び出す必要がある場合はspawnを使用します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です