基 础 函 数 参 考


StderrRead

读取运行的子进程 STDERR 流.

StderrRead ( 子进程 ID [, 取数 = false [, 二进制 = false]] )

参 数

子进程 ID 子进程 ID, 由先前调用的 Run 返回.
取数 [可选参数] 如为 true, 函数不删除从流中读取字符.
二进制 [可选参数] 如为 true, 函数读取二进制数据, 而非文本(默认为文本).

返 回 值

成功: 返回读取的数据. @extended 包含读取的字节数.
失败: @error 设置为非 0 值, 到达 EOF(文件尾), STDERR 不再为进程或其他错误重定向.

备 注

StderrRead 从控制台读取子进程的标准输出流, 通常用于控制台应用程序写入到屏幕.
对子进程调用 Run 期间, 要读取标准 I/O 值, 参数必须包括 $STDERR_CHILD (4), 函数才能正常工作 (见 the Run 函数).
StderrRead 不被阻塞时, 将立刻返回. 要获取所有数据, 它必须在循环中调用.
在流上"取数"不会把数据从缓冲器删除, 且能返回正常可用的数据.
默认数据以文本格式返回. 如使用"二进制"选项, 数据将以二进制格式返回.

相 关 函 数

StdoutRead, StdinWrite, StdioClose, Run, RunAs

函 数 示 例


; Demonstrates 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 读取:", $line)
WEnd

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

MsgBox(0, "调试", "准备退出...")

provider with jb51.net (unicode)