Quelle est la différence entre Process.fork et les nouvelles méthodes Process.spawn dans Ruby 1.9.2 et laquelle est préférable d'exécuter un autre programme dans un sous-processus? Pour autant que je comprends, Process.fork accepte un bloc de code et Process.spawn prend une commande système ainsi que d'autres paramètres. Quand devrais-je utiliser l'un au lieu de l'autre?
Réponses
Trop de publicités?Quelle est la différence entre les Processus.la fourche et le nouveau Processus.frayer méthodes de Ruby 1.9.2
Process.fork
vous permet d'exécuter du code ruby dans un autre processus.Process.spawn
vous permet d'exécuter un autre programme dans un autre processus. Fondamentalement,Process.spawn
, c'est comme utiliserProcess.fork
, puis en appelantexec
dans la fourche, sauf qu'il vous donne plus d'options.et lequel est le mieux pour exécuter un autre programme dans un sous-processus?
Si vous avez besoin de rétro-compatibilité, utilisez
fork
+exec
commespawn
n'est pas disponible en 1.8. Sinon, utilisezspawn
depuis l'exécution d'un autre programme dans un sous-processus est exactement ce qu'spawn
est faite pour.Autant je comprends le Processus.fourche accepte bloc de code et de Processus.frayer prend un système de commande ainsi que quelques autres paramètres.
Exactement.
Quand je dois utiliser l'un plutôt que l'autre?
Utiliser
fork
si vous avez besoin pour exécuter arbitrairement du code ruby dans un processus séparé (vous ne pouvez pas faire cela avecspawn
). Utiliserspawn
si vous avez besoin d'invoquer une application dans un sous-processus.