Function Reference

首页  后退  前进

StderrRead

 

读取运行的子进程 STDERR 流.

 

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

参数

process_id

子进程 ID, 由先前调用的 Run 返回.

peek

[可选] 如为 true, 函数不删除从流中读取字符.

binary

[可选] 如为 true, 函数读取二进制数据, 而非文本(默认为文本).

返回值

成功:

返回读取的数据. @extended 包含读取的字节数.

失败:

设置 @error 为非 0 值, 到达 EOF(文件尾), STDERR 不再为进程或其它错误重定向.

备注

StderrRead 从控制台读取子进程的标准输出流, 通常用于控制台应用程序写入到屏幕.

对子进程调用 Run() 期间, 要读取标准 I/O 值, 参数必须包括 $STDERR_CHILD (4), 函数才能正常工作 (见 Run 函数).

StderrRead 不会阻塞, 它将立刻返回. 要获取所有数据, 它必须在循环中调用.

在流上"取数"不会把数据从缓冲器删除, 且能返回正常可用的数据.

默认数据以文本格式返回. 如使用"二进制"选项, 数据将以二进制格式返回.

相关

Run, RunAs, StdinWrite, StdioClose, StdoutRead

函数示例

#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>
Example()
Func Example()
    Local $iPID = Run(@ComSpec & " /c DIR Example.au3", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    Local $sOutput = ""
    While 1
        $sOutput = StdoutRead($iPID)
        If @error Then ; Exit the loop if the process closes or StdoutRead returns an error.
            ExitLoop
        EndIf
        MsgBox($MB_SYSTEMMODAL, "Stdout Read:", $sOutput)
    WEnd
    While 1
        $sOutput = StderrRead($iPID)
        If @error Then ; Exit the loop if the process closes or StderrRead returns an error.
            ExitLoop
        EndIf
        MsgBox($MB_SYSTEMMODAL, "Stderr Read:", $sOutput)
    WEnd
EndFunc   ;==>Example

----------------------------------------