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] Zitieren
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. Zitieren
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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.