Bonjour à tous,
Voilà, après avoir lu la faq sur fork (merci pour ça), j'ai tenté la chose suivante pour faire un compteur (dans un premier temps):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
$timeout=30;
 
&NewPid;
 
 
sub NewPid()
{
      defined($pid = fork) or die "Pas de fork possible : $!";
      unless($pid) 
      {
            $time=$timeout;
            while($time>0)
            {
                  system("cls");
                  print "Il vous reste: $time\n secondes";
                  $time=&Decompte($time);
            }
      }
waitpid($pid, 0);
}
 
#Retour au père;
 
 
 
sub Decompte()
{
    $decompte=$_[0];
    $decompte=$decompte-1;
    sleep(1);
    return $decompte;
}
Mais j'obtiens l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
L'instruction à "0x2806c0f9" emploie l'adresse mémoire "0xabababb3". La mémoire ne peut être read.
Clique ok pour terminer le programme.
Cliquez sur annuler pour débogue rle programme
Bien sûr quand je clique sur ok, ça ferme le programme et quand ej clique sur annuler, ça me dit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
perl a généré des erreurs et windows va fermé perl
Voilà, qu'est-ce qui ne va pas dans mon script ????

Merci pour vos réponses



PS: A noter que je n'ai pas d'erreur et que ça fonctionne bien lorsque je fais:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
$timeout=30;
 
 
 
      defined($pid = fork) or die "Pas de fork possible : $!";
      unless($pid) 
      {
            $time=$timeout;
            while($time>0)
            {
                  system("cls");
                  print "Il vous reste: $time\n secondes";
                  $time=&Decompte($time);
            }
      }
waitpid($pid, 0);
 
#Retour au père;
 
 
 
sub Decompte()
{
    $decompte=$_[0];
    $decompte=$decompte-1;
    sleep(1);
    return $decompte;
}