[리눅스 시스템 프로그래밍] 5.6 freopen, fdopen

표준 입출력 라이브러리에서는 fopen 외에도 freopen, fdopen 함수를 통해 파일 스트림을 열 수 있어요. 이 두 함수는 이미 열려진 파일을 재지정할 때 사용합니다.

 

freopen은 열려진 파일 스트림을 입력 인자로 전달하고 fdopen은 파일 디스크립터를 전달합니다.

#include <stdio.h >

FILE *freopen(const char *pathname, const char *mode, FILE *fp);

FILE *fdopen(int fd, const char *mode);

반환 값: 실패 시 NULL

다음은 main 함수 인자로 파일 명을 전달하면 표준 출력을 해당 파일명으로 재지정합니다. 이 후 printf 함수를 호출하면 콘솔 화면에 출력하지 않고 재지정한 파일에 출력하는 것을 확인할 수 있습니다.

[그림 5.8] ex_freoepn 실행 화면
[그림 5.8] ex_freoepn 실행 화면
 

다음은 fdopen 함수를 이용하여 표준 출력을 파일 스트림으로 재지정합니다. 이 후에 fprintf 함수를 호출하여 쓰기 작업을 수행하면 표준 출력으로 쓰기 작업을 수행하는 것과 같은 효과가 있는 것을 볼 수 있어요.

[그림 5.9] ex_fdoepn 실행 화면
[그림 5.9] ex_fdoepn 실행 화면