Utiliser la fonction fork pour créer des process, wait pour savoir lorsqu'un fils meurt et exec pour lancer des commandes.
L'exemple qui suit est un programme complet qui va lancer des programmes passés en argument, attendre qu'ils aient tous finit puis mourir à son tour :
#!/usr/bin/perl use strict; use POSIX qw(:sys_wait_h); { my $name = $0; my $num_option = $#ARGV; my $current = 0; print $num_option + 1 ." options\n"; my $fork; my $i; for($i = 0; $i <= $num_option; $i++) { $fork = fork(); if($fork == 0) { exec($ARGV[$i]); exit(0); } else { $current++; print "launch $ARGV[$i]\n"; } } my $child; while($current > 0) { $child = waitpid(-1,WNOHANG); if($child != -1 and $child != 0) { print "$child finished\n"; $current--; } sleep(1); } exit 0; }