32 votes

Quelle est la différence entre Process.fork et Process.spawn dans Ruby 1.9.2

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?

47voto

sepp2k Points 157757

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 utiliser Process.fork , puis en appelant exec 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 comme spawn n'est pas disponible en 1.8. Sinon, utilisez spawn 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 avec spawn). Utiliser spawn si vous avez besoin d'invoquer une application dans un sous-processus.

0voto

McKay Points 7281

Je crois que Process.Fork bifurque le processus actuel et Process.Spawn engendre un nouveau processus. Ils sont assez différents. Voulez-vous un nouveau fil ou un nouveau processus?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X