Meilleure réponse
Le frai commence un autre processus, puis continue le processus qui a engendré le frai.
Le fork est un mécanisme Unix / Posix spécifique qui peut être utilisé pour le frai. Forking produit deux versions presque identiques du même processus. « Presque » parce que les processus peuvent dire sil sagit de la version originale ou de la version fourchue. Ils pourraient alors simplement continuer, faire des choses différentes en fonction de leur connaissance de l’instance, mais la chose la plus courante est d’obtenir immédiatement l’une des instances pour se remplacer par un processus différent, produisant le même effet que le frai. Mais vous navez pas à le faire – la logique des deux tâches pourrait être contenue dans un processus.
Réponse
Process.fork vous permet dexécuter du code ruby dans un autre processus. Process.spawn vous permet dexécuter un autre programme dans un autre processus. Fondamentalement, Process.spawn revient à utiliser Process.fork, puis à appeler exec dans le processus fourchu, sauf quil vous donne plus doptions.
et lequel est le meilleur pour exécuter un autre programme dans un sous-processus?
Si vous avez besoin dune compatibilité descendante, utilisez fork + exec car spawn nest pas disponible dans la version 1.8. Sinon, utilisez spawn car lexécution dun autre programme dans un sous-processus est exactement ce pour quoi spawn est fait.
Pour autant que je sache, Process.fork accepte le bloc de code et Process.spawn prend une commande système ainsi que dautres paramètres.
Exactement.
Quand dois-je utiliser lun au lieu de lautre?
Utilisez fork si vous avez besoin dexécuter du code ruby arbitraire dans un processus séparé (vous ne pouvez pas faire cela avec spawn). Utilisez spawn si vous avez besoin dappeler une application dans un sous-processus.