etreu Geschrieben 24. Mai 2004 Geschrieben 24. Mai 2004 Ich will mittels pipe einen Prozess starten und mit dessen Ausgabe weiterarbeiten. Das Einlesen der Standardausgabe funktioniert auch ohne Probleme. Wenn allerdings Fehler bei diesem Prozess auftreten, werden diese auf die Standardfehlerausgabe geschrieben. Wie kann ich diese Lesen? # auszug (lesen der standardausgabe) $systemCall = "any Command"; open(IN,$systemCall) or die "fehler: $! $?"; while(<IN>) { # ... } close(IN); [/php]
dr.disk Geschrieben 24. Mai 2004 Geschrieben 24. Mai 2004 Dafür gibt's mehrere Möglichkeiten: Die erste Möglichkeit ist den open Befehl wie folgt zu benutzen: open PH, '/bin/date 2>&1 |'; Dadurch wird STDERR auf STDOUT umgeleitet und davon gelesen.Die zweite Möglichkeit besteht darin open2 oder open3 zu benutzen. Siehe hierzu auch die Dokumentationen IPC::Open2 und IPC::Open3. Diese Befehle liefern Dir Handles auf STDIN, STDOUT und ggf. STDERR.
etreu Geschrieben 25. Mai 2004 Autor Geschrieben 25. Mai 2004 Dafür gibt's mehrere Möglichkeiten: Die erste Möglichkeit ist den open Befehl wie folgt zu benutzen: open PH, '/bin/date 2>&1 |'; Dadurch wird STDERR auf STDOUT umgeleitet und davon gelesen.Die zweite Möglichkeit besteht darin open2 oder open3 zu benutzen. Siehe hierzu auch die Dokumentationen IPC::Open2 und IPC::Open3. Diese Befehle liefern Dir Handles auf STDIN, STDOUT und ggf. STDERR. besten dank! Habe auch gerade was gefunden:http://www.perldoc.com/perl5.8.4/pod/perlfaq8.html#How-can-I-capture-STDERR-from-an-external-command-. Da steht auch drin, dass das Lesen nur mittels system() funktioniert oder eben über die oben angesprochenen Module.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden