Qual é a diferença entre bifurcação e desova de um processo?


Melhor resposta

Desova é iniciar outro processo e então continuar com o processo que gerou a desova.

Bifurcação é um mecanismo Unix / Posix específico que pode ser usado para gerar. Forking produz duas versões quase idênticas do mesmo processo. “Quase” porque os processos podem dizer se eles são a versão original ou a versão bifurcada. Eles poderiam então simplesmente continuar, fazendo coisas diferentes de acordo com o conhecimento de qual instância eles são, mas a coisa mais comum a fazer é obter imediatamente um dos instâncias para se substituir por um processo diferente, produzindo o mesmo efeito da desova. Mas você não precisa fazer isso – a lógica de ambas as tarefas poderia ser contida em um processo.

Resposta

Process.fork permite que você execute código ruby ​​em outro processo. Process.spawn permite que você execute outro programa em outro processo. Basicamente, Process.spawn é como usar Process.fork e então chamar exec no processo bifurcado, exceto que oferece mais opções.

e qual é o melhor para executar outro programa em um subprocesso?

Se você precisa de compatibilidade com versões anteriores, use fork + exec já que o spawn não está disponível no 1.8. Caso contrário, use o spawn, pois executar outro programa em um subprocesso é exatamente para o que o spawn foi feito.

Tanto quanto eu entendo, Process.fork aceita bloco de código e Process.spawn leva um comando do sistema mais alguns outros parâmetros.

Exatamente.

Quando devo usar um em vez do outro?

Use fork se você precisar executar código ruby ​​arbitrário em um processo separado (você não pode fazer isso com spawn). Use spawn se precisar invocar um aplicativo em um subprocesso.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *