Thread Skript nach Programmaufruf fortsetzen
(12 answers)
Opened by IceRage at 2008-09-16 02:13
Hallo allerseits,
angeblich soll ja system() im Gegensatz zu exec(), dass Skript nicht beenden. Vielleicht hab ich ja was falsch gemacht, aber bei mir geht das irgendwie nicht. Ob ich nun system() oder exec() aufrufe, dass Skript läuft erst dann weiter, wenn das Aufgerufene Programm (Firefox), wieder geschlossen wurde (alles unter Debian übrigens). Folgendes habe ich darauf hin ausprobiert: 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 while (1) { pipe(READER,WRITER); READER->autoflush(1); WRITER->autoflush(1); my $pid = fork(); if($pid == 0){ # Child-Prozess close READER; print WRITER $$; print "Ich bin das Kind: ",$$,"\n"; my $output = system("/usr/bin/firefox file:///home/uname/log/testseite.html"); # print $output; exit(0); } else{ # Parent-Prozess print "Ich bin der Vater: ",$$,"\n"; wait(); close WRITER; my $i = 0; my @line = <READER>; while (1) { print "$i Ich bin der Vater: ",$$,"\n"; print "$i Und mein Kind ist: ",$line[0],"\n"; $i++; sleep(1); if ($i >= 5) { $i = 0; exit(0); # Child killen ! } } } print "besser dann doch abbrechen."; sleep(1); } Das Sktipt soll Folgendes tun: - 1. Browser öffnen - 2. In die while schleife (Parent Prozess) gehen - 3. Nach 20 Schleifendurchläufen (Parent Prozess) den Browser, an Hand der übermittelten PID schließen. - 4. Dann wieder das Selbe ... 1. Ich bekomm das nicht hin. Kann mir dabei bitte jemand helfen? Gruß, IceRage |