He descubierto Perl bifurcación recientemente y estoy muy enamorado. Pero una cosa me preocupa: si solo estoy dividiendo procesos de izquierda a derecha, seguramente esto causará algún problema en alguna parte. ¿Hay algún tipo de control razonable que uno deba usar para asegurarse de que mi pequeña aplicación no consuma todos los recursos de mi máquina?Perl - horquilla responsable
Tome este código de ejemplo:
foreach my $command (@commands) {
my $pid = fork();
if (!$defined $pid) {
#Fork failed. Do something.
} elsif ($pid == 0) { #This is the child.
system($command);
exit(0)
}
}
while (wait() != -1) {} #wait() will be -1 when the last child exits.
Así que esto va a funcionar bien, y desovar en marcha un proceso para manejar cada comando. Todo sucederá en paralelo, lo cual es genial si estos comandos son completamente independientes.
¿Qué pasa si de repente tengo 5000+ comandos para ejecutar? No sería prudente desviar sin pensar esos muchos procesos. Entonces, ¿qué tipo de control debería implementarse y cómo?
)
Um, mantener un registro de cuántas has bifurcada, y parar en un máximo entonces, ¿no matas a la máquina y tienes un administrador del sistema muy pronto enojado que se despierta a las 3 de la mañana? ;) –
Bien, pero ¿qué es un "máximo" razonable? – Jeremy
Es tonto llamar 'system' donde lo hiciste. 'system' es básicamente' fork' + 'exec' (child) +' waitpid' (parent). Cambiar 'system' a' exec'. – ikegami