Hello
J'ai un soucis avec un script perl que j'essaie de faire, qui fait un fork de lui-même, pour calculer son temps d'execution (en gros, l'idée étant de faire une action si le temps est supérieur ou inférieur à un temps défini, mais sans attendre la fin de l'execution si c'est plus long que prévu)
Le code :
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 #!/usr/bin/perl $cmd = "sleep 20 "; my $pid; defined($pid = fork()) or die "unable to fork: $!\n"; if ($pid == 0) { #parent exec($cmd); die ; } else { #child $time=0; while(1) { $rc = system("ps -p".$pid." 2>&1 >/dev/null" ); if($rc==0){ print "pid $pid still running after $time seconds\n"; } else{ print "pid $pid running after $time seconds\n"; exit; } $time+=5; sleep 5; } }
quand je lance, tout va bien jusqu'à 20 secondes, puis le process sleep passe en defunct, et le process parent attend dans le vide.
pour l'instant, c'est sur du linux, mais il faudrait que ca marche également sous windows... si possible
Idéalement, quand le script parent "sleep 20" se finit, j'aimerais obtenir son return code...
Une idée ?
merci !
Partager