Lorsqu’une application AIR démarre un processus natif, elle peut communiquer avec les flux d’entrée, de sortie et d’erreur standard de ce dernier.
Vous lisez et écrivez les données dans les flux à l’aide des propriétés suivantes de l’objet NativeProcess :
-
standardInput
: permet d’accéder aux données du flux d’entrée standard.
-
standardOutput
: permet d’accéder aux données du flux de sortie standard.
-
standardError
: permet d’accéder aux données du flux d’erreur standard.
Ecriture dans le flux d’entrée standard
Vous pouvez écrire des données dans le flux d’entrée standard à l’aide des méthodes d’écriture de la propriété
standardInput
de l’objet NativeProcess. Lorsque l’application AIR écrit des données dans le processus, l’objet NativeProcess distribue des événements
standardInputProgress
.
S’il se produit une erreur lors de l’écriture dans le flux d’entrée standard, l’objet NativeProcess distribue un événement
ioErrorStandardInput
.
Pour fermer le flux d’entrée, appelez la méthode
closeInput()
de l’objet NativeProcess. Lors de la fermeture du flux d’entrée, l’objet NativeProcess distribue un événement
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();
}
Lecture dans le flux de sortie standard
Vous pouvez lire les données du flux de sortie standard par le biais des méthodes de lecture de cette propriété. Au fur et à mesure que l’application AIR extrait du processus les données du flux de sortie, l’objet NativeProcess distribue des événements
standardOutputData
.
S’il se produit une erreur lors de l’écriture du flux de sortie standard, l’objet NativeProcess distribue un événement
standardOutputError
.
Lorsque le processus ferme le flux de sortie, l’objet NativeProcess distribue un événement
standardOutputClose
.
Veillez à lire les données issues du flux d’entrée standard au fur et à mesure de leur génération. En d’autres termes, associez un écouteur à l’événement
standardOutputData
. Dans l’écouteur d’événements
standardOutputData
, lisez les données issues de la propriété
standardOutput
de l’objet NativeProcess. N’attendez pas l’événement
standardOutputClose
ou
exit
pour lire l’ensemble des données. Si vous ne lisez pas les données au fur et à mesure que le processus natif les génère, la mémoire tampon risque d’être saturée ou les données de se perdre. Une mémoire tampon saturée risque d’entraîner le blocage du processus natif lorsqu’il essaie d’écrire d’autres données. Toutefois, si vous n’associez pas d’écouteur à l’événement
standardOutputData
, la mémoire tampon ne se remplit pas et le processus ne se bloque pas. Il vous sera dans ce cas impossible d’accéder aux données.
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);
}
Lecture dans le flux d’erreur standard
Vous pouvez lire les données du flux d’erreur standard par le biais des méthodes de lecture de cette propriété. Au fur et à mesure que l’application AIR lit dans le processus les données du flux d’erreur, l’objet NativeProcess distribue des événements
standardErrorData
.
S’il se produit une erreur lors de l’écriture du flux d’erreur standard, l’objet NativeProcess distribue un événement
standardErrorIoError
.
Lorsque le processus ferme le flux d’erreur, l’objet NativeProcess distribue un événement
standardErrorClose
..
Veillez à lire les données issues du flux d’erreur standard au fur et à mesure de leur génération. En d’autres termes, associez un écouteur à l’événement
standardErrorData
. Dans l’écouteur d’événements
standardErrorData
, lisez les données extraites de la propriété
standardError
de l’objet NativeProcess. N’attendez pas l’événement
standardErrorClose
ou
exit
pour lire l’ensemble des données. Si vous ne lisez pas les données au fur et à mesure que le processus natif les génère, la mémoire tampon risque d’être saturée ou les données de se perdre. Une mémoire tampon saturée risque d’entraîner le blocage du processus natif lorsqu’il essaie d’écrire d’autres données. Toutefois, si vous n’associez pas d’écouteur à l’événement
standardErrorData
, la mémoire tampon ne se remplit pas et le processus ne se bloque pas. Il vous sera dans ce cas impossible d’accéder aux données.
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);
}