Qual è la differenza tra il fork e la deposizione delle uova di un processo?


La migliore risposta

La generazione delle uova è avviare un altro processo e poi continuare con il processo che ha generato la deposizione delle uova.

Il fork è un meccanismo Unix / Posix specifico che può essere utilizzato per lo spawn. Forking produce due versioni quasi identiche dello stesso processo. “Quasi” perché i processi possono dire se si tratta della versione originale o biforcuta. potrebbero quindi continuare, facendo cose diverse in base alla conoscenza di quale istanza si trovano, ma la cosa più comune da fare è ottenere immediatamente uno dei istanze di sostituirsi con un processo diverso, producendo lo stesso effetto della deposizione delle uova. Ma non devi farlo: la logica per entrambe le attività potrebbe essere contenuta in un unico processo.

Risposta

Process.fork ti permette di eseguire codice ruby ​​in un altro processo. Process.spawn ti consente di eseguire un altro programma in un altro processo. Fondamentalmente Process.spawn è come usare Process.fork e quindi chiamare exec nel processo biforcuto, tranne per il fatto che ti dà più opzioni.

e qual è il migliore per eseguire un altro programma in un sottoprocesso?

Se hai bisogno della retrocompatibilità, usa fork + exec poiché spawn non è disponibile nella 1.8. Altrimenti usa spawn poiché eseguire un altro programma in un sottoprocesso è esattamente ciò per cui spawn è fatto.

Per quanto ho capito Process.fork accetta blocchi di codice e Process.spawn accetta un comando di sistema più alcuni altri parametri.

Esatto.

Quando dovrei usarne uno invece dellaltro?

Usa fork se hai bisogno di eseguire codice ruby ​​arbitrario in un processo separato (non puoi farlo con spawn). Usa spawn se devi invocare unapplicazione in un sottoprocesso.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *