Funktionsreferenz

StderrRead

Liest eine Anzahl von Zeichen aus einem STDERR-Stream eines zuvor gestarteten Child-Prozesses ein.

StderrRead ( process_id[, peek = false[, binary = false]] )

 

Parameter

process_id Die Prozess-ID eines Child-Prozesses, wie aus einem vorigen Aufruf von Run zurückgegeben.
peek [optional] Wenn True, werden die von der Funktion eingelesenen Zeichen nicht aus dem Stream entfernt.
binary [optional] Wenn True, werden die Daten als Binärwerte, wenn False als Text gelesen (Voreinstellung ist Text).

 

Rückgabewert

Erfolg: Gibt die eingelesenen Daten zurück. @extended gibt die Anzahl der gelesenen Bytes zurück.
Fehler: Setzt @error ungleich Null wenn: EOF wurde erreicht, STDERR wurde an diesen Prozess nicht weitergeleitet oder ein anderer Fehler ist aufgetreten.

 

Bemerkungen

StderrRead liest aus dem Konsolen-Standard-Error-Stream eines Child-Prozesses, der normalerweise von Konsolen-Applikationen genutzt wird, um Fehler auf dem Bildschirm auszugeben. Solange die Funktion aus dem Child-Prozess-Stream lesen möchte, muss der STD-I/O-Parameter das $STDERR_CHILD-Flag (Integer 4) enthalten, damit diese Funktion richtig arbeitet (siehe die Run Funktion).
StderrRead wartet nicht, sondern kehrt umgehend zurück. Um alle Daten aus dem Stream zu lesen, muss StderrRead In einer Schleife aufgerufen werden.
Wenn StderrRead mit peek = True aufgerufen wird, dann wird StderrRead auf den Stream nur einen kurzen Blick werfen ("peek at"), anstatt ihn auszulesen, und gibt die Zeichen zurück, die im Stream verfügbar sind. Beachte, dass alle Zeichen nach einem "peek" noch im Stream vorhanden sind und beim nächsten Lesevorgang erneut zurückgegeben werden.
Normalerweise werden die Daten als Text zurückgegeben, mit der Binary-Option können die Daten als Binärwert gelesen werden.

 

Verwandte Funktionen

StdoutRead, StdinWrite, StdioClose, Run, RunAs

 

Beispiel


; Demonstriert StdoutRead()
#include <Constants.au3>

Local $foo = Run(@ComSpec & " /c dir foo.bar", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
Local $line
While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDOUT gelesen:", $line)
WEnd

While 1
    $line = StderrRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDERR gelesen:", $line)
WEnd

MsgBox(0, "Debug", "Wie aufregend...")