![]()
一旦AIR应用程序启动本机进程,它就可以与该进程的标准输入,标准输出和标准错误流进行通信.
使用NativeProcess对象的以下属性流读取数据并将数据写入该流:
您可以使用NativeProcess对象的standardInput属性的write方法将数据写入标准输入流. 当AIR应用程序将数据写入进程时,NativeProcess对象将调度多个standardInputProgress事件.

如果写入标准输入流时出错,则NativeProcess对象将分派ioErrorStandardInput事件.
您可以通过调用NativeProcess对象的closeInput()方法来关闭输入流. 关闭输入流后,NativeProcess对象将调度standardInputClose事件.
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
var file:File = File.applicationDirectory.resolvePath("test.exe");
nativeProcessStartupInfo.executable = file;
process = new NativeProcess();
process.start(nativeProcessStartupInfo);
process.standardInput.writeUTF("foo");
if(process.running)
{
process.closeInput();
}

使用此属性的read方法从标准输出流中读取数据. 当AIR应用程序从流程获取输出流数据时,NativeProcess对象将调度多个standardOutputData事件.
如果写入标准输出流时发生错误,则NativeProcess对象将调度standardOutputError事件.
当进程关闭输出流时,NativeProcess对象将调度standardOutputClose事件.
从标准输入流读取数据时如何查看本机进程,请确保在生成数据时读取数据. 换句话说,为standardOutputData事件添加一个事件侦听器. 在standardOutputData事件侦听器中,从NativeProcess对象的standardOutput属性读取数据. 不要只是等待standardOutputClose事件或exit事件读取所有数据. 在本机进程生成数据时无法读取数据可能会导致缓冲区已满或数据丢失. 尝试写入更多数据时,填充缓冲区可能会导致本机进程终止. 但是,如果您没有为standardOutputData事件注册事件侦听器,则不会填充缓冲区,并且过程也不会终止. 在这种情况下,您将无权访问数据.
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
var file:File = File.applicationDirectory.resolvePath("test.exe");
nativeProcessStartupInfo.executable = file;
process = new NativeProcess();
process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, dataHandler);
process.start(nativeProcessStartupInfo);
var bytes:ByteArray = new ByteArray();
function dataHandler(event:ProgressEvent):void
{
bytes.writeBytes(process.standardOutput.readBytes(process.standardOutput.bytesAvailable);
}
使用此属性的read方法从标准错误流中读取数据. 当AIR应用程序从流程中读取错误流数据时,NativeProcess对象将调度多个standardErrorData事件.
如果在写入标准错误流时发生错误,NativeProcess对象将调度standardErrorIoError事件.
当进程关闭错误流时,NativeProcess对象将调度standardErrorClose事件.
从标准错误流中读取数据时,请确保在生成数据时读取数据. 换句话说,为standardErrorData事件添加一个事件侦听器. 在standardErrorData事件侦听器中,从NativeProcess对象的standardError属性读取数据. 不要只是等待standardErrorClose事件或exit事件读取所有数据. 在本机进程生成数据时无法读取数据可能会导致缓冲区已满或数据丢失. 尝试写入更多数据时,填充缓冲区可能会导致本机进程终止. 但是,如果您没有为standardErrorData事件注册事件侦听器如何查看本机进程,则不会填充缓冲区,并且过程也不会终止. 在这种情况下,您将无权访问数据.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-151172-1.html
现在又上市