반응형

표준 입출력 라이브러리 4

표준 입출력 - freopen, fdopen

표준 입출력 라이브러리에서는 fopen 외에도 freopen, fdopen 함수를 통해 파일 스트림을 열 수 있어요. 이 두 함수는 이미 열려진 파일을 재지정할 때 사용합니다. freopen은 열려진 파일 스트림을 입력 인자로 전달하고 fdopen은 파일 디스크립터를 전달합니다.#include FILE *freopen(const char *pathname, const char *mode, FILE *fp);FILE *fdopen(int fd, const char *mode);반환 값: 실패 시 NULL 다음은 main 함수 인자로 파일 명을 전달하면 표준 출력을 해당 파일명으로 재지정합니다. 이 후 printf 함수를 호출하면 콘솔 화면에 출력하지 않고 재지정한 파일에 출력하는 것을 확인할 수 있습니다...

표준 입출력 - fopen, fclose

표준 입출력 라이브러리에서는 작업할 파일을 열 때 fopen 함수를 사용합니다. 정상적으로 파일을 열면 작업할 파일 스트림 정보를 기억하는 FILE 구조체 포인터를 반환하며 실패하면 NULL을 반환합니다. 이 후에 모든 표준 입출력 라이브러리를 사용할 때 fopen 함수에서 반환한 파일 스트림을 인자로 사용합니다. 모든 작업을 완료하여 더 이상 파일 스트림을 사용하지 않는다면 fclose 함수를 호출하여 파일 스트림을 닫습니다. #include FILE *fopen(const char *pathname, const char *mode);반환 값: 실패 시 NULLmode: “r” 읽기 모드 “w” 쓰기 모드 “a” 추가 모드 “t” 텍스트 파일 모드 “b” 바이너리 파일 모드 “+” 읽기/쓰기 모두 가능..

파일입출력 - 버퍼링

리눅스에서는 파일 입출력을 할 때 물리적인 파일에 조회 및 기록의 횟수를 최소화하여 성능을 높이기 위해 버퍼링 정책을 사용하고 있습니다. 만약 write 호출로 데이터를 쓰기 명령을 전달하면 해당 파일 작업을 위한 버퍼에 기록을 해 두었다가 정책에 따라 특정 시점에 물리적인 파일에 기록을 수행합니다. 리눅스에서 제공하는 버퍼링 정책에는 버퍼가 꽉 차면 물리적인 파일에 기록하는 FULL BUFFERING과 꽉 차거나 개행문자가 오면 처리하는 LINE BUFFERING, 버퍼를 사용하지 않는 NULL BUFFERING 정책을 제공하고 있습니 디폴트 버퍼링 정책은 FULL BUFFERING이며 char 장치 파일에 관한 작업은 LINE BUFFERING 정책을 사용합니다. 그리고 오류를 출력하는 stderr ..

표준 입출력 라이브러리

파일 입출력에 관한 system 호출(open, close, write, ...)을 사용하여 응용 프로그램을 제작하는 비용을 줄일 수 있게 ANSI C 표준기구에서는 표준 입출력 라이브러리를 제공합니다. 표준 입출력 라이브러리는 C언어 창시자인 데니스리치에 의해 1975년에 만들어졌으며 지금도 거의 개발 초기 모습을 유지하고 있습니다. 표준 입출력 라이브러리는 개발자 편의성과 효율성이 높은 파일 입출력을 제공하기 위해 만들었습니다. 시스템 호출을 이용하여 파일 입출력 작업을 하면 시스템 호출할 때마다 커널을 통해 입출력을 수행하여 시스템 효율이 떨어질 수 있습니다. 표준 입출력 라이브러리를 이용하여 파일 입출력 작업을 하면 파일 스트림 버퍼를 이용하여 시스템 호출 횟수를 줄여줍니다. 예를 들어 write..

반응형