unlocked_stdio(3) — Linux manual page

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | ATTRIBUTES | STANDARDS | HISTORY | SEE ALSO | COLOPHON

unlocked_stdio(3)        Library Functions Manual       unlocked_stdio(3)

NAME         top

       getc_unlocked, getchar_unlocked, putc_unlocked, putchar_unlocked -
       nonlocking stdio functions

LIBRARY         top

       Standard C library (libc, -lc)

SYNOPSIS         top

       #include <stdio.h>

       int getc_unlocked(FILE *stream);
       int getchar_unlocked(void);
       int putc_unlocked(int c, FILE *stream);
       int putchar_unlocked(int c);

       void clearerr_unlocked(FILE *stream);
       int feof_unlocked(FILE *stream);
       int ferror_unlocked(FILE *stream);
       int fileno_unlocked(FILE *stream);
       int fflush_unlocked(FILE *_Nullable stream);

       int fgetc_unlocked(FILE *stream);
       int fputc_unlocked(int c, FILE *stream);

       size_t fread_unlocked(size_t size, size_t n;
                             void ptr[restrict size * n],
                             size_t size, size_t n,
                             FILE *restrict stream);
       size_t fwrite_unlocked(size_t size, size_t n;
                             const void ptr[restrict size * n],
                             size_t size, size_t n,
                             FILE *restrict stream);

       char *fgets_unlocked(int n;
                             char s[restrict n], int n, FILE *restrict stream);
       int fputs_unlocked(const char *restrict s, FILE *restrict stream);

       #include <wchar.h>

       wint_t getwc_unlocked(FILE *stream);
       wint_t getwchar_unlocked(void);
       wint_t fgetwc_unlocked(FILE *stream);

       wint_t fputwc_unlocked(wchar_t wc, FILE *stream);
       wint_t putwc_unlocked(wchar_t wc, FILE *stream);
       wint_t putwchar_unlocked(wchar_t wc);

       wchar_t *fgetws_unlocked(int n;
                             wchar_t ws[restrict n], int n,
                             FILE *restrict stream);
       int fputws_unlocked(const wchar_t *restrict ws,
                             FILE *restrict stream);

   Feature Test Macro Requirements for glibc (see
   feature_test_macros(7)):

       getc_unlocked(), getchar_unlocked(), putc_unlocked(),
       putchar_unlocked():
           /* glibc >= 2.24: */ _POSIX_C_SOURCE >= 199309L
               || /* glibc <= 2.23: */ _POSIX_C_SOURCE
               || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

       clearerr_unlocked(), feof_unlocked(), ferror_unlocked(),
       fileno_unlocked(), fflush_unlocked(), fgetc_unlocked(),
       fputc_unlocked(), fread_unlocked(), fwrite_unlocked():
           /* glibc >= 2.19: */ _DEFAULT_SOURCE
               || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

       fgets_unlocked(), fputs_unlocked(), getwc_unlocked(),
       getwchar_unlocked(), fgetwc_unlocked(), fputwc_unlocked(),
       putwchar_unlocked(), fgetws_unlocked(), fputws_unlocked():
           _GNU_SOURCE

DESCRIPTION         top

       Each of these functions has the same behavior as its counterpart
       without the "_unlocked" suffix, except that they do not use
       locking (they do not set locks themselves, and do not test for the
       presence of locks set by others) and hence are thread-unsafe.  See
       flockfile(3).

ATTRIBUTES         top

       For an explanation of the terms used in this section, see
       attributes(7).
       โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
       โ”‚ Interface            โ”‚ Attribute     โ”‚ Value                   โ”‚
       โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
       โ”‚ getc_unlocked(),     โ”‚ Thread safety โ”‚ MT-Safe race:stream     โ”‚
       โ”‚ putc_unlocked(),     โ”‚               โ”‚                         โ”‚
       โ”‚ clearerr_unlocked(), โ”‚               โ”‚                         โ”‚
       โ”‚ fflush_unlocked(),   โ”‚               โ”‚                         โ”‚
       โ”‚ fgetc_unlocked(),    โ”‚               โ”‚                         โ”‚
       โ”‚ fputc_unlocked(),    โ”‚               โ”‚                         โ”‚
       โ”‚ fread_unlocked(),    โ”‚               โ”‚                         โ”‚
       โ”‚ fwrite_unlocked(),   โ”‚               โ”‚                         โ”‚
       โ”‚ fgets_unlocked(),    โ”‚               โ”‚                         โ”‚
       โ”‚ fputs_unlocked(),    โ”‚               โ”‚                         โ”‚
       โ”‚ getwc_unlocked(),    โ”‚               โ”‚                         โ”‚
       โ”‚ fgetwc_unlocked(),   โ”‚               โ”‚                         โ”‚
       โ”‚ fputwc_unlocked(),   โ”‚               โ”‚                         โ”‚
       โ”‚ putwc_unlocked(),    โ”‚               โ”‚                         โ”‚
       โ”‚ fgetws_unlocked(),   โ”‚               โ”‚                         โ”‚
       โ”‚ fputws_unlocked()    โ”‚               โ”‚                         โ”‚
       โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
       โ”‚ getchar_unlocked(),  โ”‚ Thread safety โ”‚ MT-Unsafe race:stdin    โ”‚
       โ”‚ getwchar_unlocked()  โ”‚               โ”‚                         โ”‚
       โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
       โ”‚ putchar_unlocked(),  โ”‚ Thread safety โ”‚ MT-Unsafe race:stdout   โ”‚
       โ”‚ putwchar_unlocked()  โ”‚               โ”‚                         โ”‚
       โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
       โ”‚ feof_unlocked(),     โ”‚ Thread safety โ”‚ MT-Safe                 โ”‚
       โ”‚ ferror_unlocked(),   โ”‚               โ”‚                         โ”‚
       โ”‚ fileno_unlocked()    โ”‚               โ”‚                         โ”‚
       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

STANDARDS         top

       getc_unlocked()
       getchar_unlocked()
       putc_unlocked()
       putchar_unlocked()
              POSIX.1-2008.

       Others:
              None.

HISTORY         top

       getc_unlocked()
       getchar_unlocked()
       putc_unlocked()
       putchar_unlocked()
              POSIX.1-2001.

SEE ALSO         top

       flockfile(3), stdio(3)

COLOPHON         top

       This page is part of the man-pages (Linux kernel and C library
       user-space interface documentation) project.  Information about
       the project can be found at 
       โŸจhttps://www.kernel.org/doc/man-pages/โŸฉ.  If you have a bug report
       for this manual page, see
       โŸจhttps://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTINGโŸฉ.
       This page was obtained from the tarball man-pages-6.18.tar.gz
       fetched from
       โŸจhttps://mirrors.edge.kernel.org/pub/linux/docs/man-pages/โŸฉ on
       2026-05-24.  If you discover any rendering problems in this HTML
       version of the page, or you believe there is a better or more up-
       to-date source for the page, or you have corrections or
       improvements to the information in this COLOPHON (which is not
       part of the original manual page), send a mail to
       man-pages@man7.org

Linux man-pages 6.18            2026-02-08              unlocked_stdio(3)

Pages that refer to this page: ferror(3)fflush(3)fgetc(3)fgetwc(3)fgetws(3)fileno(3)flockfile(3)fputwc(3)fputws(3)fread(3)gets(3)getwchar(3)puts(3)putwchar(3)stdio(3)