fopen(3) Library Functions Manual fopen(3) fopen, fdopen, freopen - (libc -lc) #include FILE *fopen(const char *restrict path, const char *restrict mode); FILE *fdopen(int fd, const char *mode); FILE *freopen(const char *restrict path, const char *restrict mode, FILE *restrict stream); glibc ( feature_test_macros(7)): fdopen(): _POSIX_C_SOURCE fopen() path . mode ( ): r . . r+ . . w . . w+ . . . a ( ). . . a+ ( ). . . POSIX . glibc Android/BSD/MacOS . mode 'b' . ISO C 'b' POSIX Linux. ( 'b' / UNIX.) glibc mode. S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH (0666) umask ( umask(2)). / . ANSI C . ( .) ( Linux) fseek(3) fsetpos(3) . ( fseek(..., 0L, SEEK_CUR) ). (a mode) : fseek(stream, 0, SEEK_END); open(2) : +------------------+-------------------------------+ | fopen() | open() | +------------------+-------------------------------+ | r | O_RDONLY | +------------------+-------------------------------+ | w | O_WRONLY | O_CREAT | O_TRUNC | +------------------+-------------------------------+ | a | O_WRONLY | O_CREAT | O_APPEND | +------------------+-------------------------------+ | r+ | O_RDWR | +------------------+-------------------------------+ | w+ | O_RDWR | O_CREAT | O_TRUNC | +------------------+-------------------------------+ | a+ | O_RDWR | O_CREAT | O_APPEND | +------------------+-------------------------------+ fdopen() fdopen() fd. ( "r", "r+", "w", "w+", "a", "a+") . fd . "w" "w+" . fdopen(). fdopen() . freopen() freopen() path stream . ( ). fopen(). path freopen() freopen() . C99 : freopen(). ( ) . freopen() (stderr stdin stdout). fopen() fdopen() freopen() FILE. NULL errno . EINVAL fopen() fdopen() freopen() . fopen() fdopen() freopen() errno malloc(3). fopen() errno open(2). fdopen() errno fcntl(2). freopen() errno open(2) fclose(3) fflush(3). attributes(7). +------------+------------------------------------+--------------------+ || | | +------------+------------------------------------+--------------------+ |fopen() | | MT-Safe | |fdopen() | | | |freopen() | | | +------------+------------------------------------+--------------------+ fopen() freopen() C11, POSIX.1-2008. fdopen() POSIX.1-2008. fopen() freopen() POSIX.1-2001 C89. fdopen() POSIX.1-2001. glibc C mode: c ( glibc 2.3.3) . fdopen(). e ( glibc 2.7) O_CLOEXEC. open(2) . fdopen(). m ( glibc 2.3) mmap(2) / (read(2) write(2)). mmap(2) . x ( O_EXCL open(2)). fopen() errno EEXIST. fdopen(). fopen() freopen() mode: ,ccs=string string . / string. ,ccs=string . . mode ( "ccs") glibc fopen() freopen() mode 7 ( glibc 2.14 6 "rb+cmxe"). fdopen() 5 mode. open(2), fclose(3), fileno(3), fmemopen(3), fopencookie(3), open_memstream(3) 3 . . : . 6.18 21 2025 fopen(3)