2010-02-24 10 views
5

Tengo un programa Perl que necesita ejecutar aproximadamente media docena de programas al mismo tiempo en segundo plano y esperar a que todos terminen antes de continuar. También es muy importante que se pueda capturar el estado de salida de cada uno.¿Cómo administro múltiples subprocesos en Perl?

¿Hay un idioma común para hacer esto en Perl? Actualmente estoy pensando en usar hilos.

Respuesta

8

No utilice hilos.. Hilos chupan La forma correcta es fork procesos múltiples y wait para que terminen. Si usa wait o waitpid, el estado de salida del proceso en cuestión estará disponible en $?.

Ver las perldocs para fork, wait, y waitpid, y también los ejemplos de this SO hilo.

Si todo lo que necesita es administrar un grupo de subprocesos que no exceda un determinado tamaño, consulte la excelente Parallel::ForkManager.

+0

Secundando el comentario 'threads suck'. Al menos en Perl. Ni siquiera te molestes. – fennec

2

Normalmente se fork + exec (en sistemas basados ​​en UNIX, este es tradicional)

La llamada tenedor duplicará el proceso actual, y si se necesita para que luego podrían llamar ejecutivo de uno de los niños a hacer algo diferente. Parece que solo quiere bifurcar y llamar a un método/función diferente en el proceso de su hijo.

Si desea algo más complejo, consulte cpan para POE, que le permite administrar todo tipo de situaciones complejas.

Enlaces de interés:

Google "libro de cocina que se bifurcan servidor de Perl" demasiado - sólo se permite para publicar un enlace a menos que inicio sesión en

Cuestiones relacionadas