Ce que tu cherche a faire est, a mon avis, fou.
En fait tu te poses un probleme qui n'existe pas (J'ai beaucoup aime la partie sur le scheduler). J'ai modifie un petit peu ton code pour que tu comprennes pourquoi.
Code :
- #!/usr/bin/perl -w
- use strict;
- sub test_fork {
- my $pid;
- my $pid2;
- my $i = 0;
- if ($pid = fork()){
- while (1){
- sleep 1;
- print "a";
- print "\n" unless $i++ % 2;
- }
- }
- elsif (defined($pid)){
- while (1){
- if ($pid2 = fork()){
- while (1){
- sleep 1;
- print "b";
- print "\n" unless $i++ % 5;
- }
- }
- elsif (defined($pid2)){
- while (1){
- sleep 1;
- print "c";
- print "\n" unless $i++ % 10;
- }
- }
- }
- }
- else {print "Erreur de Fork\n";}
- }
- &test_fork;
|
Si tu utilises print pour afficher quelque chose la chaine est stockee dans un buffer (pour eviter de faire des appels systemes trop frequents). Lorsque le buffer est plein ou si celui-ci contient un '\n', le buffer est flushe.
Rajoute ceci en haut du script juste apres le 'use scrict';
Tu pourras mediter en changeant les valeurs de $|.
Message édité par Danjer le 09-01-2006 à 02:07:45
---------------
Cdl, Danjer