next up previous contents
suivant: Utiliser un client TCP monter: Communication inter-process précédent: Envoyer un signal   Table des matières

Créer des processus

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;
    
}



Stephane TOUGARD 2002-09-07