Schrift
[thread]6269[/thread]

Problem mit fork und exec: geht nur mit: "exec myprogram &"



<< >> 3 Einträge, 1 Seite
quetzalcoatl
 2004-05-18 15:59
#82510 #82510
User since
2004-04-01
51 Artikel
BenutzerIn
[default_avatar]
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:
Code: (dl )
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
ptk
 2004-05-18 16:16
#82511 #82511
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Dein CHLD-Handler sieht nicht richtig aus. Besser ist wahrscheinlich waitpid(-1, WNOHANG).
quetzalcoatl
 2004-05-18 16:25
#82512 #82512
User since
2004-04-01
51 Artikel
BenutzerIn
[default_avatar]
super!! Vielen Dank! das war's!

Mann!! ich liebe dieses Forum! :)

Gruss,
quetzal
<< >> 3 Einträge, 1 Seite



View all threads created 2004-05-18 15:59.