Thread Neue Shell per Shell oder Perl öffnen (12 answers)
Opened by Daniel at 2009-05-08 14:36

topeg
 2009-05-11 09:54
#121416 #121416
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
ungetestet:

Code (perl): (dl )
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/perl
use strict;
use warnings;
use POSIX ":sys_wait_h";

my @cmds=('script1.sh', 'script2.sh', 'script3.sh');

my @pids;
# prozesse starten:
for my $cmd (@cmds)
{
 # Prozess forken
 my $pid=fork();

 # wenn im Kindprozess
 # Kommando ausfuehren ProzessID des Kindprozesses übernehmen:
 # perldoc -f exec
 exec($cmd) unless($pid);

 # im Hauptprozess
 if(defined($pid))
 {
   push(@pids, $pid);
 }
 else
 {
    warn "Fehler beim Kommando: $cmd\n ($!)\n";
 }
}

# prozesse überwachen:
my $running;
do
{
  $running=0;

  # eine Sekunde warten
  sleep(1);

  for my $pos (0..$#pids)
  {
    my $pid =$pids[$pos];

    # nicht mehr laufende Prozesse ueberspringen:
    next if($pid==-1);

    # das System fragen ob der Prozess noch läuft:
    $runn=waitpid($pid,&WNOHANG);

    # auswerten
    if($runn == -1)
    {
      # beendet
      $pids[$pos]=-1;
      print "Kommando: ".$cmds[$pos]."( $pid ) beendet ( EXITCODE: $?).\n";
    }
    else
    {
      # laeft noch
      $running++;
    }
  }
  print "$running Prozesse laufen noch\n";
}
while($running > 0);

print "Alle aufgaben erledigt\n";
exit(0);


Edit: kleinen Fehler in Zeile 21 korrigiert.
Last edited: 2009-05-11 10:00:28 +0200 (CEST)

View full thread Neue Shell per Shell oder Perl öffnen