스트림과 관련 라이브러리 함수

이동욱

2021/07/24

Categories: 시스템 프로그래밍 Tags: 시스템 프로그래밍

스트림 관련 라이브러리 함수

stdio


버퍼링


버퍼링 모드


예외

그러나 몇가지 중요한 예외가 있다.

1. 스트림이 단말에 연결된 경우에는 버퍼가 가득찰 때까지 기다리지 않고
개행 (\n)을 만나는 시점에서 write()를 실행한다. 이유는, 반대편에 모니터와
같은 단말이 있다면 사람이 출력을 보고 있을 가능성이 높기 때문이다.
버퍼가 가득차기 까지는 오랜 시간이 걸릴 수도 있기 때문에 적절한 순간에
바로 출력해주는 것이 프로그램의 응답이 빨라지고 사용자의 사용성도 좋아진다.

2. 스트림이 비버퍼링 모드(unbuffered mode)로 되어 있는 경우이다. 비버퍼링 모드로 설정된 
stdio 스트림에 데이터를 쓰면 버퍼링 없이 즉시 write()가 수행된다. setvbuf()로 설정할 수 있다.

3. 표준 예외 출력에 해당하는 stderr에 대한 출력이다. stderr은 예외적으로 처음부터
비버퍼링 모드다. 그 이유는 표준 에러 출력의 경우 에러 메시지나 디버깅 정보를 출력하는데 사용되기 때문에 발생한 시점에서 바로 출력하는 것이 바람직하기 때문이다.

FILE 타입


stdio의 표준 입출력


파일 디스크립터 정식 명칭 stdio 변수명 의미
0 STDIN_FILENO stdin 표준 입력
1 STDOUT_FILENO stdout 표준 출력
2 STDERR_FILENO stderr 표준 에러 출력

fopen(3)


표준 입출력 이외의 스트림에 대한 FILE을 여는 것도 물론 가능하다. 이때는 fopen() 이라는 API를 사용한다. 이것은 시스템 콜 open()에 대응된다.

#include <stdio.h>

FILE *fopen(const char *path, const char *mode);

`fclose(3)


#include <stdio.h>

int fclose(FILE *stream);

문자열 입출력


참고 문헌

>> Home