Thread Child Prozess beenden (36 answers)
Opened by Eng1958 at 2013-10-25 12:14

Eng1958
 2013-10-25 12:14
#171473 #171473
User since
2013-06-04
37 Artikel
BenutzerIn
[default_avatar]
Guten Tag,
ich soll ein kleinen Daemon schreiben welcher ein Script startet, welches per Argument mitgegeben wird. Dieses Script läuft immer Endlos aber es könnte sein, dass es sich aufhängt. Der Daemon soll das ganze erkennen und das Script neustarten. Wenn der Daemon per "kill -15 <Daemon ID> beendet wird soll auch das gestartete Script beendet werden."
Habe mich dann mal hingesetzt und mich informiert wie sowas zu realisieren ist und bin dabei Parent- und ChildProzess gefunden. Habe auf dieser Basis dann auch einen kleinen "Prototyp" geschrieben:
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
28
29
30
use strict;
use warnings;

my $x = 1;
my $pid = fork();
while($x == 1)
{
print "$$";
$pid = fork();
if(!defined $pid)
{
die "Could not fork!";
}
elsif($pid == 0)
{
#Hier bin ich im Child-Prozess
#$x++;
#print "Ich bin das Kind: ",$$,"\tx:$x\n";
print "starte Schript\n";
exec("perl test.pl");
}
else
{
#Hier bin ich im Parent-Prozess
#print "ich bin der Vater: ",$$,"\tx:$x\n";
print "Warte auf Child\n";
wait();
}
}
#kill(0, $pid);


An sich funktioniert das Ding auch, wenn ich das gestartete Script per "kill -15 <Script ID>" abschieße wird es neugestartet. Es kann natürlich aus sein, dass das ganze deutlich "schöner" geht aber das habe ich jetzt auf Basis meines Wissens geschrieben. Gerne möchte ich dazulernen: Also wenn jemand was hat gerne melden.
Jetzt fehlt nur noch das Beide beendet werden, wenn der Daemon beendet wird. Dazu habe ich ganz unten das "kill(0, $pid)" angefügt. Wenn ich das allerdings drinnen lasse kommt die Fehlermeldung:
Quote
Execution of fork.pl aborted due to compilation errors.

Last edited: 2013-10-25 12:17:43 +0200 (CEST)

View full thread Child Prozess beenden