Veröffentlicht 24. Mai 200421 j 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]
24. Mai 200421 j 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.
25. Mai 200421 j Autor 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.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.