基 础 函 数 参 考


StdoutRead

读取运行的子进程 STDOUT 流.

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

参 数

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

返 回 值

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

备 注

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

相 关 函 数

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

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

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

provider with jb51.net (unicode)