AIR 응용 프로그램이 기본 프로세스를 시작한 후에는 프로세스의 표준 입력, 표준 출력 및 표준 오류 스트림과 통신할 수 있습니다.
NativeProcess 객체의 다음 속성을 사용하여 스트림에서 데이터를 읽고 쓸 수 있습니다.
-
standardInput
- 표준 입력 스트림 데이터에 대한 액세스를 포함합니다.
-
standardOutput
- 표준 출력 스트림 데이터에 대한 액세스를 포함합니다.
-
standardError
- 표준 오류 스트림 데이터에 대한 액세스를 포함합니다.
표준 입력 스트림에 쓰기
NativeProcess 객체의
standardInput
속성에 대한 쓰기 메서드를 사용하여 표준 입력 스트림에 데이터를 쓸 수 있습니다. 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();
}
표준 출력 스트림에서 읽기
이 속성의 읽기 메서드를 사용하여 표준 출력 스트림에서 데이터를 읽을 수 있습니다. 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);
}
표준 오류 스트림에서 읽기
이 속성의 읽기 메서드를 사용하여 표준 오류 스트림에서 데이터를 읽을 수 있습니다. AIR 응용 프로그램이 프로세스에서 오류 스트림 데이터를 읽으면 NativeProcess 객체가
standardErrorData
이벤트를 전달합니다.
표준 오류 스트림에 쓰는 동안 오류가 발생하면 NativeProcess 객체가
standardErrorIoError
이벤트를 전달합니다.
프로세스에서 오류 스트림을 닫으면 NativeProcess 객체가
standardErrorClose
이벤트를 전달합니다.
표준 오류 스트림에서 데이터를 읽을 때는 생성된 대로 데이터를 읽어야 합니다. 즉,
standardErrorData
이벤트에 대한 이벤트 리스너를 추가한 후
standardErrorData
이벤트 리스너에서 NativeProcess 객체의
standardError
속성으로부터 데이터를 읽어야 합니다. 단순히
standardErrorClose
이벤트 또는
exit
이벤트에서 모든 데이터를 읽을 때까지 기다리면 안 됩니다. 기본 프로세스에서 데이터가 생성된 대로 데이터를 읽지 않을 경우 버퍼가 가득 차서 데이터가 손실될 수 있습니다. 버퍼가 차면 데이터를 더 쓰려고 시도할 때 기본 프로세스가 멈출 수 있습니다. 반면
standardErrorData
이벤트에 대한 이벤트 리스너를 등록하지 않을 경우 버퍼가 차지 않아 프로세스가 멈추지 않습니다. 이 경우 데이터에 액세스할 수 없습니다.
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);
}