표준 입출력 라이브러리에서는 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 함수를 호출하면 콘솔 화면에 출력하지 않고 재지정한 파일에 출력하는 것을 확인할 수 있습니다.
/********************************************************************** * ex_freopen.c * * exmple source – test freopen * **********************************************************************/
#include <stdio.h>
int main(int argc, char **argv) { if (argc != 2) { fprintf(stderr, "Usage:%s <file name> \n", argv[0]); return 1; }
FILE *fp = freopen(argv[1], "w", stdout); if (fp) { printf("Hello Linux System Programming.\n"); fclose(fp); } else { printf("failed\n"); }
return 0; }
|
[그림 5.8] ex_freoepn 실행 화면
다음은 fdopen 함수를 이용하여 표준 출력을 파일 스트림으로 재지정합니다. 이 후에 fprintf 함수를 호출하여 쓰기 작업을 수행하면 표준 출력으로 쓰기 작업을 수행하는 것과 같은 효과가 있는 것을 볼 수 있어요.
/********************************************************************** * ex_fdopen.c * * exmple source – test fdopen * **********************************************************************/
#include <stdio.h>
int main() { FILE *fp = fdopen(1, "w"); if (fp) { fprintf(fp, "Hello Linux System Programming.\n"); fclose(fp); } else { printf("failed\n"); }
return 0; }
|
[그림 5.9] ex_fdoepn 실행 화면
'프로그래밍 기술 > 리눅스(Unix) 시스템 프로그래밍' 카테고리의 다른 글
표준 입출력 - 파일 스트림 작업 위치 변경 및 확인, fseek, ftell, rewind (0) | 2017.08.03 |
---|---|
표준 입출력 - 바이너리 모드 입출력 함수, fread, fwrite (0) | 2017.08.03 |
표준 입출력 - 텍스트 모드 입출력 함수들 (0) | 2017.08.01 |
표준 입출력 - 텍스트 모드와 바이너리 모드 입출력 (0) | 2017.08.01 |
표준 입출력 - fopen, fclose (0) | 2017.07.28 |
RAW 입출력과 표준 입출력의 성능 비교 (0) | 2017.07.27 |
표준 입출력 - FILE 구조체 (0) | 2017.07.27 |
표준 입출력 - 버퍼 및 버퍼링 정책 설정 (0) | 2017.07.27 |
파일입출력 - 버퍼링 (0) | 2017.07.25 |
표준 입출력 라이브러리 (0) | 2017.07.25 |