Un fork Unix en Perl
 


   Dans ce cas le processus discute avec un copie de lui même. Le fils continue à exécuter le script au lieu d'essayer d'exécuter un autre commande. Si la commande open contient comme second argument "|- " la fin du pipe est rattaché au STDIN du fils alors que si il contient "-| " on attache le pipe au STDOUT ( c'est à dire que l'on lira sur le handle de fichier ce qu'écrit le fils).

#!/usr/bin/perl

do{
$pid = open(KID_TO_WRITE,"|-");
unless (defined $pid){
warn "fork impossible : $!";
}
}until defined $pid;

if($pid){#pere
print KID_TO_WRITE "des_donnee";
close (KID_TO_WRITE) or warn "fils sorti $?";
}
else{#fils
open (file, ">file") or die "open impossible : $!";
while(<STDIN>){
print file;
}
exit;
}

REMARQUE : Ces opérations sont des forks UNIX complets, ce qui veut dire qu'elles peuvent ne pas être implémentées correctement sur d'autres systèmes.