FOPEN(3)

명칭
fopen, fdopen, freopen - 스트림을 오픈하는 함수

프로그램 라이브러리
libc

서식
<stdio.h> FILE * fopen(const char *path, const char *mode) FILE * fdopen(int fildes, const char *mode) FILE * freopen(const char *path, const char *mode, FILE *stream)

해설
fopen() 함수는, path 하지만 가리키는 캐릭터 라인의 이름을 가지는 파일을 오픈해, 거기에 스트림을 관련짓습니다.

인수 mode (은)는, 이하의 순차 순서의 1 개(살)로 시작되는 캐릭터 라인을 가리킵니다 (이 순차 순서에는, 다른 캐릭터가 계속되어도 상관하지 않습니다).

“r” 텍스트 파일을 독포함용으로 오픈합니다. 스트림은, 파일의 최초로 자리매김됩니다.

“r+”
    독포함용과 기록용으로 오픈합니다. 스트림은, 파일의 최초로 자리매김됩니다.

“w” 기록용으로, 파일을 길이 0 에 잘라 채우는지, 텍스트 파일을 작성합니다. 스트림은, 파일의 최초로 자리매김됩니다.

“w+”
    독포함용과 기록용으로 오픈합니다. 파일이 존재하지 않는 경우는 그 파일이 작성되어 존재하는 경우는 잘라 채울 수 있습니다. 스트림은, 파일의 최초로 자리매김됩니다.

“a” 기록용으로 오픈합니다. 파일이 존재하지 않는 경우는 그 파일이 작성됩니다. 스트림은, 파일의 마지막에 자리매김됩니다. 거기에 계속되는 파일에의 기입은, fseek(3) (와)과 같은 조작의 개재에 관련되어 없고, 항상 파일의 현시점에서의 최후로 행해집니다.

“a+”
    독포함용과 기록용으로 오픈합니다. 파일이 존재하지 않는 경우는 그 파일이 작성됩니다. 스트림은, 파일의 마지막에 자리매김됩니다. 거기에 계속되는 파일에의 기입은, fseek(3) (와)과 같은 조작의 개재에 관련되어 없고, 항상 파일의 현시점에서의 최후로 행해집니다.

mode 캐릭터 라인에는, 3 번째의 캐릭터로서 또는 위에서 설명한 2 캐릭터로부터 되는 캐릭터 라인의 사이로 지정하는 캐릭터로서 캐릭터 ``b''를 포함할 수가 있습니다. 이것은 isoC (와)과의 호환성을 유지하기 위한 것으로, 효과는 없습니다. ``b''는 무시됩니다.

작성된 파일의 모드는, \*qS_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH\*q (0666) 하지만 프로세스의 umask 치 ( umask(2) 참조)로 수정된 것이 됩니다.

읽고 쓰기 스트림에서는, 독포함과 기록을 어떠한 순서에서도 혼합할 수가 있어 전 버젼의 stdio (와)과 같이, 그러한 사이에 시크 조작은 필요 없습니다. 그렇지만, 이것은 다른 시스템에의 이식성이 없습니다. 그렇다고 하는 것은, ANSI C (은)는, 입력 오퍼레이션이 파일의 종료에 이르지 않은 경우, 파일 자리 매김 함수가 출력과 입력동안에 개재하는 것을 요구하고 있기 때문입니다.

fdopen() 함수는, 기존의 파일 기술자 fildes 에 스트림을 관련짓습니다. 스트림의 mode 에는, 파일 기술자의 모드와의 호환성이 필요합니다. fclose(3) 에 의해 스트림이 닫혀졌을 때에는, fildes 도 닫혀집니다.

freopen() 함수는, path 하지만 가리키는 캐릭터 라인의 이름이 붙은 파일을 열어, stream 하지만 가리키는 스트림을 관련짓습니다. 원래의 스트림이 존재하는 경우, 그것은 닫혀집니다. mode 인수는, fopen() 함수와 같습니다. freopen() 의 주된 사용 목적은, 표준 텍스트 스트림 (stderr, stdin stdout) 에 관련지을 수 있었던 파일을 변환일입니다.

반환값
호출이 성공하면(자), fopen,() fdopen,() freopen() 하 FILE 포인터를 돌려줍니다. 문제가 있는 경우는 NULL (을)를 돌려주어, 그 에러를 나타내는 값을 글로벌 변수 errno (으)로 설정합니다.

에러

[EINVAL]
    fopen(), fdopen(), freopen() 의 mode 하지만 올바르지는 않습니다.

fopen(), fdopen(), freopen() 함수는, 에러가 발생하면(자), routine malloc(3) 그리고 규정된 에러를 errno (으)로 설정하는 일도 있습니다.

fopen() 함수는, 에러가 발생하면(자), routine open(2) 그리고 규정된 에러를 errno (으)로 설정하는 일도 있습니다.

fdopen() 함수는, 에러가 발생하면(자), routine fcntl(2) 그리고 규정된 에러를 errno (으)로 설정하는 일도 있습니다.

freopen() 함수는, 에러가 발생하면(자), routine open(2), fclose(3), fflush(3) 그리고 규정된 에러를 errno (으)로 설정하는 일도 있습니다.

관련 항목
open(2), fclose(3), fileno(3), fseek(3), funopen(3)

표준
fopen() 함수와 freopen() 함수는, isoC 에 적합하고 있습니다. fdopen() 함수는, p1003.1-88 에 적합하고 있습니다.