From: Christian Weisgerber (naddy_at_mips.rhein-neckar.de)
Date: 08. Feb 2000
Michael Lestinsky <michael_at_zaphod.rhein-neckar.de> wrote:
> open (FH, "/pfad/programm param1 param2 param3 |");
> while (<FH>) {
> print $_;
> }
> close FH;
ACK
> Das heißt, das Programm wird aufgerufen, und erst, wenn es wieder
> terminiert, dann werden auch die Daten ausgegeben.
Das heißt es nicht.
Wahrscheinlich bleibt im konkreten Fall die Ausgabe im Stdout-Puffer
des Programms stecken. Per Default ist Stdout zu einem TTY zeilenweise
gepuffert, sonst blockweise (8kB oder so). Das ist eine Funktion des
stdio-Teils der libc.
> Kann ich irgendwie an den Output des aufgerufenen Programms
> kommen, noch während es läuft?
Du musst es um fflush(3) an gewünschter Stelle erweitern.
> Kann ich eigentlich auch irgendwie das STDERR des aufgerufenen
> Programms umleiten?
Siehe perlipc(1).
Ansonsten kann man mit pipe(), fork(), dup(), exec() in der gewohnten
Weise selbst Hand anlegen.
PS: Morgen Abend ohne mich, ich kuriere noch an den Nachwirkungen einer
Grippe rum.
-- Christian "naddy" Weisgerber naddy_at_mips.rhein-neckar.de
Dieses Archiv wurde generiert von hypermail 2.1.2 : 11. Mar 2002 CET