AIR アプリケーションでは、ネイティブプロセスを起動したら、プロセスの標準入力ストリーム、標準出力ストリーム、および標準エラーストリームと通信できます。
ストリームのデータの読み取りおよび書き込みは、NativeProcess オブジェクトの次のプロパティを使用して行います。
-
standardInput
— 標準入力ストリームデータへのアクセスを含みます。
-
standardOutput
— 標準出力ストリームデータへのアクセスを含みます。
-
standardError
— 標準エラーストリームデータへのアクセスを含みます。
標準入力ストリームへの書き込み
標準入力ストリームにデータを書き込むには、NativeProcess オブジェクトの
standardInput
プロパティの書き込みメソッドを使用します。AIR アプリケーションがプロセスにデータを書き込むと、NativeProcess オブジェクトは
standardInputProgress
イベントを送出します。
標準入力ストリームへの書き込みでエラーが発生すると、NativeProcess オブジェクトは
ioErrorStandardInput
イベントを送出します。
入力ストリームを終了するには、NativeProcess オブジェクトの
closeInput()
メソッドを呼び出します。入力ストリームが終了するとき、NativeProcess オブジェクトは
standardInputClose
イベントを送出します。
var nativeProcessStartupInfo = new NativeProcessStartupInfo();
var file = air.File.applicationDirectory.resolvePath("test.exe");
nativeProcessStartupInfo.executable = file;
process = new air.NativeProcess();
process.start(nativeProcessStartupInfo);
process.standardInput.writeUTF("foo");
if(process.running)
{
process.closeInput();
}
標準出力ストリームからの読み取り
標準出力ストリームからデータを読み取るには、このプロパティの読み取りメソッドを使用します。AIR アプリケーションがプロセスから出力ストリームデータを受信すると、NativeProcess オブジェクトは
standardOutputData
イベントを送出します。
標準出力ストリームへの書き込みでエラーが発生すると、NativeProcess オブジェクトは
standardOutputError
イベントを送出します。
出力ストリームが終了するとき、NativeProcess オブジェクトは
standardOutputClose
イベントを送出します。
標準データストリームからデータを読み取るときは、生成時にデータを読み取ってください。言い換えると、
standardOutputData
イベントのイベントリスナーを追加します。
standardOutputData
イベントリスナーで、NativeProcess オブジェクトの
standard utput
プロパティからデータを読み取ります。
standardOutputClose
イベントまたは
exit
イベントがすべてのデータを読み取るのを待たないでください。ネイティブプロセスが生成するときにデータを読み取らないと、バッファーがいっぱいになるか、データが失われる可能性があります。バッファーがいっぱいになると、さらにデータを書き込もうとしたときにネイティブプロセスがストールすることがあります。ただし、
standardOutputData
イベントのイベントリスナーを登録しない場合、バッファーはいっぱいにならず、プロセスはストールしません。この場合、データにアクセスすることはできません。
var nativeProcessStartupInfo = new NativeProcessStartupInfo();
var file = air.File.applicationDirectory.resolvePath("test.exe");
nativeProcessStartupInfo.executable = file;
process = new air.NativeProcess();
process.addEventListener(air.ProgressEvent.STANDARD_OUTPUT_DATA, dataHandler);
process.start(nativeProcessStartupInfo);
var bytes = new air.ByteArray();
function dataHandler(event)
{
bytes.writeBytes(process.standardOutput.readBytes(process.standardOutput.bytesAvailable);
}
標準エラーストリームからの読み取り
標準エラーストリームからデータを読み取るには、このプロパティの読み取りメソッドを使用します。AIR アプリケーションがプロセスからエラーストリームデータを読み取ると、NativeProcess オブジェクトは
standardErrorData
イベントを送出します。
標準エラーストリームへの書き込みでエラーが発生すると、NativeProcess オブジェクトは
standardErrorIoError
イベントを送出します。
エラーストリームが終了するとき、NativeProcess オブジェクトは
standardErrorClose
イベントを送出します。
標準エラーストリームからデータを読み取るときは、生成時にデータを読み取ります。言い換えると、
standardErrorData
イベントのイベントリスナーを追加します。
standardErrorData
イベントリスナーで、NativeProcess オブジェクトの
standardError
プロパティからデータを読み取ります。
standardErrorClose
イベントまたは
exit
イベントがすべてのデータを読み取るのを待たないでください。ネイティブプロセスが生成するときにデータを読み取らないと、バッファーがいっぱいになるか、データが失われる可能性があります。バッファーがいっぱいになると、さらにデータを書き込もうとしたときにネイティブプロセスがストールすることがあります。ただし、
standardOutputData
イベントのイベントリスナーを登録しない場合、バッファーはいっぱいにならず、プロセスはストールしません。この場合、データにアクセスすることはできません。
var nativeProcessStartupInfo = new NativeProcessStartupInfo();
var file = air.File.applicationDirectory.resolvePath("test.exe");
nativeProcessStartupInfo.executable = file;
process = new air.NativeProcess();
process.addEventListener(air.ProgressEvent.STANDARD_ERROR_DATA, errorDataHandler);
process.start(nativeProcessStartupInfo);
var errorBytes = new air.ByteArray();
function errorDataHandler(event)
{
errorBytes.writeBytes(process.standardError.readBytes(process.standardError.bytesAvailable);
}