Hallo,
ich wundere mich grade über ein Problem mit fork und exec.
Ich möchte eigentlich eine kleine schleife, die überprüft ob ein bestimmes (oder mehrere) Programm läuft - wenn nicht soll er es starten.
Komischerweise geht das nur wenn ich die Programme im Hintergrund ausführe:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl -w
@programs=("gkrellm", "xclock");
$SIG{'CHLD'} = sub { wait(); };
while (1) {
# running programs
foreach $p (@programs) {
if (system("pidof $p >/dev/null 2>&1") != 0) {
$retval=fork(); if ($retval == 0) { exec "$p &"; exit; }
}
}
sleep(1);
}
wenn ich das "&" hinter "exec "$p &" weglasse gehts nicht mehr - dann wartet mein Programm auf exec.
Weiß jemand warum?
Gruss,
quetzal