Functions > Process >


StdoutRead

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

StdoutRead ( 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 � partir du 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 d�clench�, STDOUT n'a pas �t� redirig� pour le processus ou autre erreur.

Remarques

StdoutRead() 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. Pendant l'appel de Run() pour le processus enfant, pour lire � partir de STD I/O, le param�tre doit avoir inclus la valeur $STDOUT_CHILD (2) pour que cette fonction travaille correctement (voir la fonction Run()).

La fonction StdoutRead() ne bloque pas, elle retournera imm�diatement. Afin d'obtenir toutes les donn�es, elle doit �tre appel�e dans une boucle.
Une lecture sur le flux ne supprime pas les donn�es de la m�moire tampon, cependant, elle renvoie les donn�es disponibles comme d'habitude.

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

En relation

Run, RunAs, StderrRead, StdinWrite, StdioClose

Exemple

#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>
#include <Array.au3> ; Required for _ArrayDisplay only.

; Affiche de mani�re r�cursive la liste des fichiers d'un r�pertoire.
Example()

Func Example()
    Local $sFilePath = @ScriptDir ; Recherche dans le r�pertoire du script en cours.
    Local $sFilter = "*.*" ; Recherche tous les fichiers dans le r�pertoire courant. Pour une liste des caract�res g�n�riques valides, recherchez 'caract�res g�n�riques' dans le fichier d'aide.

    ; Si le chemin du fichier n'est pas un r�pertoire alors retourne.
    If Not StringInStr(FileGetAttrib($sFilePath), "D") Then
        Return SetError(1, 0, 0)
    EndIf

    ; Enl�ve les antislashs arri�re et ajoute une simple barre oblique inverse.
    $sFilePath = StringRegExpReplace($sFilePath, "[\\/]+\z", "") & "\"

    #cs
        Param�tres de ligne de commande pour DIR:
        /B - Simple sortie.
        /A-D - Recherche tous les fichiers moins les r�pertoires.
        /S - Recherche dans les sous-r�pertoires.
    #ce
    Local $iPID = Run(@ComSpec & ' /C DIR "' & $sFilePath & $sFilter & '" /B /A-D /S', $sFilePath, @SW_HIDE, $STDOUT_CHILD)
    ; Si vous souhaitez rechercher des fichiers contenant des caract�res Unicode, alors utilisez le param�tre de ligne de commande  /U.

    ; Attend que le processus ait ferm� en utilisant le PID renvoy� par Run.
    ProcessWaitClose($iPID)

    ; Lit le flux Stdout du PID renvoy� par Run. Ceci peut �galement �tre fait dans une boucle while. Regardez l'exemple de StderrRead.
    Local $sOutput = StdoutRead($iPID)

    ; Utilise StringSplit pour partager la sortie de StdoutRead en un tableau. Tous les retours chariot (@CRLF) sont supprim�s et @CRLF (saut de ligne) est utilis� comme s�parateur.
    Local $aArray = StringSplit(StringTrimRight(StringStripCR($sOutput), StringLen(@CRLF)), @CRLF)
    If @error Then
        MsgBox($MB_SYSTEMMODAL, "", "Il semble qu'il y ait eu une erreur en essayant de trouver tous les fichiers dans le r�pertoire de script courant.")
    Else
        ; Affiche les r�sultats.
        _ArrayDisplay($aArray)
    EndIf
EndFunc   ;==>Example