| |||
| Home > 표준 C 구현 정의 > 구현 정의 > 환경 | |||
ARM 아키텍처 기반 환경에서 main() 인수로의 명령 행 매핑은
구현에 따라 다릅니다. 일반 ARM C 라이브러리는 다음을 지원합니다.
main()에 주어진 인수는 입/출력 리디렉션을 제외한 명령 행의
워드로, 공백이 큰 따옴표 안에 있는 경우를 제외하고 공백으로 구분됩니다.
공백 문자는 isspace()가
참인 경우 어떤 문자도 될 수 있습니다.
큰 따옴표 또는 큰 따옴표 안에 포함된 백슬래시 문자 \는
백슬래시 문자가 앞에 와야 합니다.
큰 따옴표 안에서는 입력/출력 리디렉션이 인식되지 않습니다.
호스팅되지 않은 ARM C 라이브러리 구현에서 대화형 장치라는 용어는
의미가 없을 수 있습니다. 일반 ARM C 라이브러리는 키보드 입력과 VDU 화면 출력을 처리하는 데 사용되는 :tt라고
하는 한 쌍의 장치를 지원합니다. 일반 구현은 다음과 같습니다.
입/출력 리디렉션이 발생하는 경우를 제외하고는 :tt에
연결된 어떤 스트림에서도 버퍼링이 수행되지 않습니다.
:tt 이외의 장치에 대한 입/출력 리디렉션이 발생하면
전체 파일 버퍼링이 사용됩니다. 그러나 stdout과 stderr이
동일한 파일로 리디렉션된 경우에는 라인 버퍼링이 사용됩니다.
일반 ARM C 라이브러리를 사용하여 표준 입력, 출력 및 오류 스트림이 런타임에 리디렉션될 수 있습니다.
예를 들어 mycopy가 표준 입력을 표준 출력으로 복사하는 호스트 디버거에서 실행
중인 프로그램이면 다음 라인이 프로그램을 실행합니다.
mycopy < infile > outfile 2> errfile
그리고 파일을 다음과 같이 리디렉션합니다.
stdin표준 입력 스트림은 infile로 리디렉션됩니다.
stdout표준
출력 스트림은 outfile로 리디렉션됩니다.
stderr표준
오류 스트림은 errfile로 리디렉션됩니다.
다음과 같은 리디렉션이 허용됩니다.
0< filename 에서 filenamestdin을
읽습니다.
< filename 에서 filenamestdin을
읽습니다.
1> filenamestdout을 에
씁니다.filename
> filenamestdout을 에
씁니다.filename
2> filenamestderr를 에
씁니다.filename
2>&1stdout과
동일한 장소에 stderr를 씁니다.
>& filestdout과 stderr 를
모두 에 씁니다.filename
>> filename 에 filenamestdout을
추가합니다.
>>& filenamestdout과 stderr를
모두 에 추가합니다.filename
타겟의 stdin, stdout 및 stderr를
리디렉션하려면 다음과 같이 정의해야 합니다.
#pragma import(_main_redirection)
파일 리디렉션은 다음 중 한 경우에만 수행됩니다.
호출하는 운영 체제가 리디렉션을 지원하는 경우
프로그램에서 문자를 읽고 쓰고 C 라이브러리 함수 fputc() 및 fgetc()를
대체하지 않는 경우