Functions > Process >


StderrRead

Lit dans le flux STDERR d'un processus enfant lanc� au pr�alable.

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

Param�tres

process_id L'ID du processus enfant, tel que retourn� par un appel pr�c�dent � Run.
peek [optionnel] Si True, la fonction ne supprime pas les caract�res lus dans le flux.
binary [optionnel] Si True, la fonction lit les donn�es de mani�re binaire au lieu de texte (par d�faut, texte).

Valeur de retour

Succ�s: Retourne les donn�es lues. @extended contient le nombre d'octets lus.
�chec: D�finit @error <> 0 si EOF est atteint, STDERR n'a pas �t� redirig� pour le processus ou une autre erreur.

Remarques

StderrRead() lit � partir du flux de sortie standard de la console du processus enfant, qui est normalement utilis� par les applications console pour �crire sur l'�cran. Durant l'appel de Run() pour le processus enfant, si vous souhaitez lire � partir du STD I/O, le param�tre doit avoir pris en compte la valeur $STDERR_CHILD (4) sinon cette fonction ne tavaillera pas correctement (voir la fonction Run()).

StderrRead() ne bloque pas, elle retournera imm�diatement. Afin d'obtenir toutes les donn�es, elle doit �tre appel�e dans une boucle.

La lecture sur le flux ne supprime pas les donn�es de la m�moire tampon, cependant, la fonction retourne les donn�es disponibles comme d'habitude.

Par d�faut, les donn�es sont retourn�es au format texte. En utilisant l'option binaire, les donn�es seront retourn�es au format binaire.

En relation

Run, RunAs, StdinWrite, StdioClose, StdoutRead

Exemple

#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Le script Example.au3 est suppos� absent du dossier @SystemDir, pour traiter l'erreur
    Local $iPID = Run(@ComSpec & " /c DIR Example.au3", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    Local $sOutput = StdoutRead($iPID)
    While @error = 0 
        ; Sort de la boucle si le processus ferme ou si StdoutRead retourne une erreur.
        MsgBox($MB_SYSTEMMODAL, "Stdout Read:", $sOutput)
        $sOutput = StdoutRead($iPID)
    WEnd

    $sOutput = StderrRead($iPID)
    While @error = 0
        ; Sort de la boucle si le processus ferme ou si StderrRead retourne une erreur.
        MsgBox($MB_SYSTEMMODAL, "Stderr Read:", $sOutput)
        $sOutput = StderrRead($iPID)
    WEnd
EndFunc   ;==>Example