Function Reference

StderrRead

実行した子プロセスのSTDERRストリームを読み取ります。

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

 

パラメータ

process_id Run実行時に返される子プロセスのプロセスID。
peek [オプション]trueの場合、関数は読み取った文字をストリームから削除しません。
binary [オプション]trueの場合、関数はテキストではなくバイナリとしてデータを読み取ります(デフォルトではテキストです)。

 

返し値

成功 読み取ったデータを返します。@extendedには読み取ったバイト数が格納されます。
失敗 EOFに到達した場合、@errorを非ゼロに設定します。STDERRはプロセス、その他のエラーをリダイレクトしません。

 

注意

StderrReadは子プロセスのコンソール標準出力ストリームを読み取ります。コンソール標準エラーストリームは通常はコンソールアプリケーションがスクリーンにエラーを表示するために使用されます。この関数が正常に動作するためには、読み取りたい子プロセスをRunで実行する際にSTD I/Oパラメータに値 $STDERR_CHILD (4)を設定する必要があります(Run関数を参照)。
StderrReadは処理を止めず、直ちに返ります。全てのデータを取得するにはループ内で呼び出す必要があります。
ストリームのデータ取得ではバッファからデータは削除されませんが通常は利用可能なデータが返されます。
デフォルトではデータはテキスト形式で返されます。バイナリオプションを使用することによってデータはバイナリ形式で返されます。

 

関連

StdoutRead, StdinWrite, StdioClose, Run, RunAs

 


; 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 read:", $line)
Wend

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

MsgBox(0, "Debug", "Exiting...")