B.1.2. 환경

ARM 아키텍처 기반 환경에서 main() 인수로의 명령 행 매핑은 구현에 따라 다릅니다. 일반 ARM C 라이브러리는 다음을 지원합니다.

main()

main()에 주어진 인수는 입/출력 리디렉션을 제외한 명령 행의 워드로, 공백이 큰 따옴표 안에 있는 경우를 제외하고 공백으로 구분됩니다.

Note

  • 공백 문자는 isspace()가 참인 경우 어떤 문자도 될 수 있습니다.

  • 큰 따옴표 또는 큰 따옴표 안에 포함된 백슬래시 문자 \는 백슬래시 문자가 앞에 와야 합니다.

  • 큰 따옴표 안에서는 입력/출력 리디렉션이 인식되지 않습니다.

대화형 장치

호스팅되지 않은 ARM C 라이브러리 구현에서 대화형 장치라는 용어는 의미가 없을 수 있습니다. 일반 ARM C 라이브러리는 키보드 입력과 VDU 화면 출력을 처리하는 데 사용되는 :tt라고 하는 한 쌍의 장치를 지원합니다. 일반 구현은 다음과 같습니다.

  • 입/출력 리디렉션이 발생하는 경우를 제외하고는 :tt에 연결된 어떤 스트림에서도 버퍼링이 수행되지 않습니다.

  • :tt 이외의 장치에 대한 입/출력 리디렉션이 발생하면 전체 파일 버퍼링이 사용됩니다. 그러나 stdoutstderr이 동일한 파일로 리디렉션된 경우에는 라인 버퍼링이 사용됩니다.

표준 입력, 출력 및 오류 스트림의 리디렉션

일반 ARM C 라이브러리를 사용하여 표준 입력, 출력 및 오류 스트림이 런타임에 리디렉션될 수 있습니다. 예를 들어 mycopy가 표준 입력을 표준 출력으로 복사하는 호스트 디버거에서 실행 중인 프로그램이면 다음 라인이 프로그램을 실행합니다.

mycopy < infile > outfile 2> errfile

그리고 파일을 다음과 같이 리디렉션합니다.

stdin

표준 입력 스트림은 infile로 리디렉션됩니다.

stdout

표준 출력 스트림은 outfile로 리디렉션됩니다.

stderr

표준 오류 스트림은 errfile로 리디렉션됩니다.

다음과 같은 리디렉션이 허용됩니다.

0< filename

filename에서 stdin을 읽습니다.

< filename

filename에서 stdin을 읽습니다.

1> filename

stdout filename에 씁니다.

> filename

stdout filename에 씁니다.

2> filename

stderr filename에 씁니다.

2>&1

stdout과 동일한 장소에 stderr를 씁니다.

>& file

stdoutstderr 를 모두 filename에 씁니다.

>> filename

filenamestdout을 추가합니다.

>>& filename

stdoutstderr를 모두 filename에 추가합니다.

타겟의 stdin, stdoutstderr를 리디렉션하려면 다음과 같이 정의해야 합니다.

#pragma import(_main_redirection)

파일 리디렉션은 다음 중 한 경우에만 수행됩니다.

  • 호출하는 운영 체제가 리디렉션을 지원하는 경우

  • 프로그램에서 문자를 읽고 쓰고 C 라이브러리 함수 fputc()fgetc()를 대체하지 않는 경우

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0348AK
Non-Confidential