21.22 Den Standardfehlerkanal eines Programms einlesen

Problem

Sie wollen die Fehlerausgabe eines Programms auslesen; zum Beispiel wollen Sie die Systemaufrufe, die von strace(1) angezeigt werden, einsehen.

Lösung

Leiten Sie den Standardfehlerkanal zur Standardausgabe um, indem Sie 2>&1 an die Kommandozeile, die an popen( ) durchgegeben wird, anfügen. Lesen Sie die Standardausgabe aus, indem Sie die Pipeline im r-Modus öffnen:

$ph = popen('strace ls 2>&1','r') or die($php_errormsg);
while (!feof($ph)) {
    $s = fgets($ph,1048576)       or die($php_errormsg);
}
pclose($ph)                       or die($php_errormsg);

Diskussion

Sowohl in der sh unter Unix als auch in der Windows-Shell cmd.exe ist der Standardfehlerkanal der Datei-Deskriptor 2 und die Standardausgabe der Datei-Deskriptor ...

Get PHP 5 Kochbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.