2010-11-08 11 views
31

Qual è la differenza tra Process.fork ei nuovi metodi Process.spawn in Ruby 1.9.2 e quale è meglio eseguire un altro programma in un sottoprocesso ? Per quanto ne so, Process.fork accetta il blocco del codice e Process.spawn accetta un comando di sistema più alcuni altri parametri. Quando dovrei usare uno invece dell'altro?Qual è la differenza tra Process.fork e Process.spawn in Ruby 1.9.2

risposta

45

Qual è la differenza tra Process.fork ei nuovi metodi Process.spawn in Ruby 1.9.2

Process.fork consente di eseguire codice Ruby in un altro processo. Process.spawn consente di eseguire un altro programma in un altro processo. Fondamentalmente lo Process.spawn è come usare Process.fork e poi chiamare exec nel processo forked, tranne che ti dà più opzioni.

e quale è meglio eseguire un altro programma in un sottoprocesso?

Se avete bisogno di compatibilità all'indietro, utilizzare fork + exec come spawn non è disponibile in 1.8. Altrimenti utilizzare spawn poiché l'esecuzione di un altro programma in un sottoprocesso è esattamente ciò che è stato creato per spawn.

Per quanto ne so, Process.fork accetta il blocco del codice e Process.spawn accetta un comando di sistema più alcuni altri parametri.

Esattamente.

Quando dovrei usare uno invece dell'altro?

Usa fork se è necessario eseguire codice arbitrario rubino in un processo separato (non è possibile farlo con spawn). Utilizzare spawn se è necessario richiamare un'applicazione in un sottoprocesso.

0

Credo che Process.Fork forca il processo corrente e Process.Spawn genera un nuovo processo. Sono abbastanza diversi. Vuoi una nuova discussione o un nuovo processo?

+1

Ho bisogno di un nuovo processo e attualmente utilizzo Process.fork (per la codifica video in background). Ho appena trovato il nuovo metodo Process.spawn in Ruby 1.9 ed ero curioso di conoscere le differenze e se posso trarne beneficio in qualche modo. – Vincent

Problemi correlati