Als een AIR-toepassing eenmaal een native proces heeft gestart, kan de toepassing communiceren met de standaardinvoerstreams, de standaarduitvoerstreams en de standaardfoutenstreams van het proces.
Met de volgende eigenschappen van het object NativeProcess kunt u streams lezen en gegevens naar streams schrijven:
-
standardInput
- Toegang tot de gegevens van de standaardinvoerstream.
-
standardOutput
- Toegang tot de gegevens van de standaarduitvoerstream.
-
standardError
- Toegang tot de gegevens van de standaardfoutenstream.
Schrijven naar de standaardinvoerstream
U kunt gegevens naar de standaardinvoerstream schrijven met de schrijfmethoden van de
standardInput
-eigenschap van het NativeProcess-object. Als de AIR-toepassing gegevens naar het proces schrijft, verzendt het NativeProcess-object
standardInputProgress
-gebeurtenissen.
Als er zich bij het schrijven naar de standaardinvoerstream een fout voordoet, verzendt het object NativeProcess een
ioErrorStandardInput
-gebeurtenis.
U kunt de invoerstream sluiten door de methode
closeInput()
van het object NativeProcess aan te roepen. Bij het sluiten van de invoerstream verzendt het NativeProcess-object een
standardInputClose
-gebeurtenis.
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();
}
De standaarduitvoerstream lezen
U kunt gegevens in de standaarduitvoerstream lezen met de leesmethoden van deze eigenschap. Wanneer de AIR-toepassing uitvoerstreamgegevens uit het proces ophaalt, verzendt het NativeProcess-object
standardOutputData
-gebeurtenissen.
Als er zich bij het schrijven naar de standaarduitvoerstream een fout voordoet, verzendt het object NativeProcess een
standardOutputError
-gebeurtenis.
Als de uitvoerstream door het proces wordt gesloten, verzendt het object NativeProcess een
standardOutputClose
-gebeurtenis.
Bij het lezen van gegevens van de standaardinvoerstream moeten de gegevens worden gelezen op het moment dat ze worden gegenereerd. Met andere woorden: u kunt het beste een gebeurtenislistener toevoegen voor de
standardOutputData
-gebeurtenis. In de
standardOutputData
-gebeurtenislistener leest u dan de gegevens van de
standardOutput
-eigenschap van het NativeProcess-object. Wacht niet op de
standardOutputClose
-gebeurtenis of de
exit
-gebeurtenis voordat u alle gegevens gaat lezen. Als u de gegevens niet leest op het moment dat ze door het native proces worden gegenereerd, kan de buffer vol raken, en kunnen er gegevens verdwijnen. Door een volle buffer kan het native proces stagneren bij het schrijven van meer gegevens. Als u geen gebeurtenislistener registreert voor de
standardOutputData
-gebeurtenis, raakt de buffer niet vol en stagneert het proces niet. In dit geval hebt u geen toegang tot de gegevens.
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);
}
De standaardfoutenstream lezen
U kunt gegevens in de standaardfoutenstream lezen met de leesmethoden van deze eigenschap. Wanneer de AIR-toepassing gegevens in de foutenstream leest, verzendt het NativeProcess-object
standardErrorData
-gebeurtenissen.
Als er zich bij het schrijven naar de standaardfoutenstream een fout voordoet, verzendt het object NativeProcess een
standardErrorIoError
-gebeurtenis.
Als de foutenstream door het proces wordt gesloten, verzendt het object NativeProcess een
standardErrorClose
-gebeurtenis.
Bij het lezen van gegevens van de standaardfoutstream moeten de gegevens worden gelezen op het moment dat ze worden gegenereerd. Met andere woorden: u kunt het beste een gebeurtenislistener toevoegen voor de
standardErrorData
-gebeurtenis. In de
standardErrorData
-gebeurtenislistener leest u dan de gegevens van de
standardError
-eigenschap van het NativeProcess-object. Wacht niet op de
standardErrorClose
-gebeurtenis of de
exit
-gebeurtenis voordat u alle gegevens gaat lezen. Als u de gegevens niet leest op het moment dat ze door het native proces worden gegenereerd, kan de buffer vol raken, en kunnen er gegevens verdwijnen. Door een volle buffer kan het native proces stagneren bij het schrijven van meer gegevens. Als u geen gebeurtenislistener registreert voor de
standardErrorData
-gebeurtenis, raakt de buffer niet vol en stagneert het proces niet. In dit geval hebt u geen toegang tot de gegevens.
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
var file:File = File.applicationDirectory.resolvePath("test.exe");
nativeProcessStartupInfo.executable = file;
process = new NativeProcess();
process.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, errorDataHandler);
process.start(nativeProcessStartupInfo);
var errorBytes:ByteArray = new ByteArray();
function errorDataHandler(event:ProgressEvent):void
{
bytes.writeBytes(process.standardError.readBytes(process.standardError.bytesAvailable);
}