Thread Programm remote über ssh aufrufen (6 answers)
Opened by Andreas_broti at 2005-07-08 12:35

Echelon1010000
 2005-07-08 12:50
#56082 #56082
User since
2005-06-29
18 Artikel
BenutzerIn
[default_avatar]
Hi
Wenn ich das richtig verstanden hab hast du keinen Signalhandler für deinen Childprozess. Den brauchst du aber. Wenn dein Childprozess sich beendet bleibt er solange als Zombie hängen bis du ihn mit wait(); sozusagen abgeholt hast. Der Parent bekommt dann das Signal CHLD und kann darauf reagieren.

Das könnte dann so aussehen:
Code: (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
...
...
sonstiger Code
...
...
# install a sighandler for sig CHLD
$SIG{CHLD} = \&chandler;
...
$pid = fork();

if ($pid == 0)
{
  alarm 10;
  $SIG{'ALRM'}= sub {exit 1;};

  system ("ssh [SERVER] \"$command\"");
  exit;
}
...
...
sub chandler
{
# get child
my $pid=wait();
print "signal CHLD from $pid erhalten, Prozess wurde beendet.";
return 1;
}


Hoffe es hilft.

Gruss, Echelon

P.S.

Man kann statt einer Sub auch etwas anderes aufrufen, diese Methode ist IMO aber die einfachste

View full thread Programm remote über ssh aufrufen