STDIO(3)

명칭
stdio - 표준 입출력 프로그램 라이브러리 함수

프로그램 라이브러리
libc

서식
<stdio.h> FILE *stdin; FILE *stdout; FILE *stderr;

해설
표준 I/O 프로그램 라이브러리는, 단순하고 효율적인 버퍼 첨부 스트림 I/O 인터페이스를 제공합니다. 입력과 출력은 논리적 데이터 스트림에 MAP 되어 물리적인 I/O 특성치는 숨겨집니다. 함수 및 매크로는 아래에 나타내는 대로입니다만, 각각 관한 개별의 메뉴얼 페이지에 한층 더 자세한 설명이 있습니다.

스트림은 파일을 연다 것에 의해, 외부 파일 (물리적인 디바이스 때도 있습니다)에 관련 지을 수 있습니다. 거기에 따라 새로운 파일이 작성되는 경우도 있습니다. 존재하는 파일을 작성하려고 하면(자), 그 파일의 이전의 내용은 파기됩니다. 파일이 위치 지정 요구 (단말이 아니고, 디스크 파일이라고 하는 것 같은)를 서포트하는 경우는, 그 파일이 추가 모드로 열리고 있으므로 않은 한, 스트림에 관련 지을 수 있었다 파일 위치 지시자 (은)는 파일의 선두 (바이트 0)를 가리킵니다. 추가 모드를 사용했을 경우는, 위치 지시자는 파일의 최후를 가리킵니다. 위치 지시자는 이후의 읽어내, 기록, 위치 지정의 요구에 의해 취급됩니다. 모든 입력은 마치 캐릭터가 fgetc(3) 함수의 연속적인 호출에 의해 읽어내졌는지와 같이 해 행해져 모든 출력은 모든 캐릭터가 fputc(3) 함수의 연속적인 호출에 의해 쓰기인가와 같이 해 행해집니다.

파일은, 그 파일을 닫는다 것에 의해 스트림과의 관련 짓고가 해제됩니다. 출력 스트림은, 파일과의 관련 짓고가 해제되기 전에 플래시 됩니다 (쓰기없었던 버퍼의 내용은 호스트 환경에 보내집니다). FILE 오브젝트에의 포인터의 값은, 파일을 닫은 후는 부정 (쓰레기)이 됩니다.

같은 프로그램 또는 다른 프로그램의 실행으로부터 파일을 재차 오픈해도 자주(잘), (파일의 개시 위치에 재차 평가하고 할 수 있는 경우는) 원래의 파일의 내용을 재이용 또는 변경할 수 있습니다. main 함수가 호출해 바탕으로 돌아가는지, 또는 exit(3) 함수가 불려 갔을 경우에는, 열려 있는 모든 파일은 닫혀집니다 (따라서, 모든 출력 스트림은 플래시 됩니다). 그 이외의 방법으로 프로그램을 종료했을 때는, 파일이 적절히 닫혀지지 않을 가능성이 있기 (위해)때문에, 버퍼링 된 출력이 없어지는 일이 있습니다. 특히, _exit(2) (은)는 stdio 파일을 플래시 하지 않습니다. 시그널에 의한 exit 도 같습니다. abort(3) (은)는 POSIX 의 요청에 따라 버퍼를 플래시 합니다만, 이전의 실장에서는 이것을 실시하고 있지 않습니다.

이 실장에서는, “텍스트” (와)과 “바이너리” 의 스트림을 구별하지 않습니다. 실제로는 모든 스트림은 바이너리입니다. 어떠한 스트림에도, 변환을 하거나 여분의 패딩이 나타나거나 할 것은 없습니다.

프로그램의 개시시에는, 다음의 3 개의 스트림이 사전에 정의되어 그것들을 명시적으로 열릴 필요는 없습니다.
•   표준 입력 (통상 입력 독해용)
•   표준 출력 (통상 출력 기록용)
•   표준 에러 출력 (진단 출력 기록용)
이러한 스트림은 stdin, stdout 그리고 stderr (와)과 약기됩니다. 초기 상태에서는 표준 에러 스트림은 버퍼링 되고 있지 않습니다. 표준 입력 및 출력 스트림은, 그 시냇물이 isatty(3) 함수로 판정되는 것 같은 회화형 또는 “단말” 디바이스에의 참조가 아닌 경우에 한정해, 완전하게 버퍼링 됩니다. 실제로, 단말 디바이스를 참조하는 신규에 열렸다 모든 스트림은 행 버퍼가 디폴트이며, 이러한 스트림에의 보류되고 있는 출력은, 입력 스트림이 읽혔을 때는 항상 자동적으로 쓰기. 이것은, “진짜 읽기” 에 대해서만 들어맞는 것에 주의해 주세요. 읽기 요구가 버퍼링 된 기존의 데이터로 시간에 맞는 경우는, 자동적인 플래시는 일어나지 않습니다. 이러한 경우, 또는 출력 단말에 행의 일부를 프린트 한 다음에 대량의 처리가 실시하는 경우에는, 출력이 나타나도록(듯이), 먼저 진행되어 처리를 실시하기 전에, 표준 출력을 fflush(3) 할 필요가 있습니다. 혹은, 이러한 디폴트를 setvbuf(3) 함수로 수정하는 것도 가능합니다.

stdio 프로그램 라이브러리는 프로그램 라이브러리 libc 의 일부이며, routine는 C 컴파일러에 의해 필요에 따라서 자동적으로 로드 됩니다. 이하의 메뉴얼의 서식 시에에서는, 어느 인클루드 파일이 사용되는지, 함수에 대한 컴파일러의 선언이 어떻게 되어 있는지, 어느 외부 변수가 관계하고 있는지를 나타냅니다.

이하의 것은 매크로로서 정의되고 있습니다. 이러한 명칭은, 현재의 정의를 #undef (을)를 사용해 삭제하지 않으면 재사용할 수 없습니다： BUFSIZ, EOF, FILENAME_MAX, FOPEN_MAX, L_cuserid, L_ctermid, L_tmpnam, NULL, P_tmpdir, SEEK_CUR, SEEK_END, SEEK_SET, TMP_MAX, clearerr, feof, ferror, fileno, fropen, fwopen, getc, getchar, putc, putchar, stderr, stdin, stdout, vfscanf 매크로 함수 clearerr(), feof(), ferror(), fileno(), getc(), getchar(), putc(), 및 putchar() 에는 함수 버젼이 존재해, 매크로 정의가 명시적으로 삭제되었을 경우에는 그것이 사용됩니다.

관련 항목
close(2), open(2), read(2), write(2)

버그
표준의 버퍼 첨부 함수는, 다른 프로그램 라이브러리 함수 및 시스템 함수, 특히 vfork(2) (와)과는 잘 상호 운용할 수가 없습니다.

표준
stdio 프로그램 라이브러리는, isoC 에 적합하고 있습니다.

함수 일람
함수 설명
asprintf | 서식 첨부 출력 변환
clearerr | 스트림 상태의 체크와 리셋트
fclose | 스트림을 닫는다
fdopen | 스트림을 여는 함수
feof | 스트림 상태의 체크와 리셋트
ferror | 스트림 상태의 체크와 리셋트
fflush | 스트림의 플래시
fgetc | 입력 스트림로부터 다음의 캐릭터 또는 워드를 취득
fgetln | 스트림로부터 1 행을 취득
fgetpos | 스트림의 위치 지정
fgets | 스트림로부터 1 행을 취득
fileno | 스트림 상태의 체크와 리셋트
fopen | 스트림을 여는 함수
fprintf | 서식 첨부 출력 변환
fpurge | 스트림의 플래시
fputc | 1 캐릭터 또는 1 워드를 스트림에 출력
fputs | 1 행을 스트림에 출력
fread | 바이너리 스트림의 입력/출력
freopen | 스트림을 여는 함수
fropen | 스트림을 연다
fscanf | 서식 첨부 입력 변환
fseek | 스트림의 위치 지정
fsetpos | 스트림의 위치 지정
ftell | 스트림의 위치 지정
funopen | 스트림을 연다
fwopen | 스트림을 연다
fwrite | 바이너리 스트림의 입력/출력
getc | 입력 스트림로부터 다음의 캐릭터 또는 워드를 취득
getchar | 입력 스트림로부터 다음의 캐릭터 또는 워드를 취득
gets | 스트림로부터 1 행을 취득
getw | 입력 스트림로부터 다음의 캐릭터 또는 워드를 취득
mkdtemp | 독특한 임시 파일을 작성
mkstemp | 독특한 임시 파일을 작성
mktemp | 독특한 임시 파일을 작성
perror | 시스템 우류 메세지
printf | 서식 첨부 출력 변환
putc | 1 캐릭터 또는 워드를 스트림에 출력
putchar | 1 캐릭터 또는 워드를 스트림에 출력
puts | 1 행을 스트림에 출력
putw | 1 캐릭터 또는 워드를 스트림에 출력
remove | 디렉토리 엔트리의 삭제
rewind | 스트림의 위치 지정
scanf | 서식 첨부 입력 변환
setbuf | 스트림의 버퍼링 조작
setbuffer | 스트림의 버퍼링 조작
setlinebuf | 스트림의 버퍼링 조작
setvbuf | 스트림의 버퍼링 조작
snprintf | 서식 첨부 출력 변환
sprintf | 서식 첨부 출력 변환
sscanf | 서식 첨부 입력 변환
strerror | 시스템 우류 메세지
sys_errlist | 시스템 우류 메세지
sys_nerr | 시스템 우류 메세지
tempnam | 임시 파일 routine
tmpfile | 임시 파일 routine
tmpnam | 임시 파일 routine
ungetc | 입력 스트림에 캐릭터를 돌려준다
vasprintf | 서식 첨부 출력 변환
vfprintf | 서식 첨부 출력 변환
vfscanf | 서식 첨부 입력 변환
vprintf | 서식 첨부 출력 변환
vscanf | 서식 첨부 입력 변환
vsnprintf | 서식 첨부 출력 변환
vsprintf | 서식 첨부 출력 변환
vsscanf | 서식 첨부 입력 변환