'\" t .\" Copyright (C) 2001 Andries Brouwer . .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .TH unlocked_stdio 3 2023-02-05 "Linux man-pages 6.03" .SH NAME getc_unlocked, getchar_unlocked, putc_unlocked, putchar_unlocked \- nonlocking stdio functions .SH LIBRARY Standard C library .RI ( libc ", " \-lc ) .SH SYNOPSIS .nf .B #include .PP .BI "int getc_unlocked(FILE *" stream ); .B "int getchar_unlocked(void);" .BI "int putc_unlocked(int " c ", FILE *" stream ); .BI "int putchar_unlocked(int " c ); .PP .BI "void clearerr_unlocked(FILE *" stream ); .BI "int feof_unlocked(FILE *" stream ); .BI "int ferror_unlocked(FILE *" stream ); .BI "int fileno_unlocked(FILE *" stream ); .BI "int fflush_unlocked(FILE *" stream ); .PP .BI "int fgetc_unlocked(FILE *" stream ); .BI "int fputc_unlocked(int " c ", FILE *" stream ); .PP .BI "size_t fread_unlocked(void " ptr "[restrict ." size " * ." n ], .BI " size_t " size ", size_t " n , .BI " FILE *restrict " stream ); .BI "size_t fwrite_unlocked(const void " ptr "[restrict ." size " * ." n ], .BI " size_t " size ", size_t " n , .BI " FILE *restrict " stream ); .PP .BI "char *fgets_unlocked(char " s "[restrict ." n "], int " n \ ", FILE *restrict " stream ); .BI "int fputs_unlocked(const char *restrict " s ", FILE *restrict " stream ); .PP .B #include .PP .BI "wint_t getwc_unlocked(FILE *" stream ); .B "wint_t getwchar_unlocked(void);" .BI "wint_t fgetwc_unlocked(FILE *" stream ); .PP .BI "wint_t fputwc_unlocked(wchar_t " wc ", FILE *" stream ); .BI "wint_t putwc_unlocked(wchar_t " wc ", FILE *" stream ); .BI "wint_t putwchar_unlocked(wchar_t " wc ); .PP .BI "wchar_t *fgetws_unlocked(wchar_t " ws "[restrict ." n "], int " n , .BI " FILE *restrict " stream ); .BI "int fputws_unlocked(const wchar_t *restrict " ws , .BI " FILE *restrict " stream ); .fi .PP .RS -4 Feature Test Macro Requirements for glibc (see .BR feature_test_macros (7)): .nh .RE .ad l .PP .BR getc_unlocked (), .BR getchar_unlocked (), .BR putc_unlocked (), .BR putchar_unlocked (): .nf /* glibc >= 2.24: */ _POSIX_C_SOURCE >= 199309L || /* glibc <= 2.23: */ _POSIX_C_SOURCE || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE .fi .PP .BR clearerr_unlocked (), .BR feof_unlocked (), .BR ferror_unlocked (), .BR fileno_unlocked (), .BR fflush_unlocked (), .BR fgetc_unlocked (), .BR fputc_unlocked (), .BR fread_unlocked (), .BR fwrite_unlocked (): .nf /* glibc >= 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE .fi .PP .BR fgets_unlocked (), .BR fputs_unlocked (), .BR getwc_unlocked (), .BR getwchar_unlocked (), .BR fgetwc_unlocked (), .BR fputwc_unlocked (), .BR putwchar_unlocked (), .BR fgetws_unlocked (), .BR fputws_unlocked (): .nf _GNU_SOURCE .fi .hy .ad .SH DESCRIPTION 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 .BR flockfile (3). .SH ATTRIBUTES For an explanation of the terms used in this section, see .BR attributes (7). .ad l .nh .TS allbox; lb lb lbx l l l. Interface Attribute Value T{ .BR getc_unlocked (), .BR putc_unlocked (), .BR clearerr_unlocked (), .BR fflush_unlocked (), .BR fgetc_unlocked (), .BR fputc_unlocked (), .BR fread_unlocked (), .BR fwrite_unlocked (), .BR fgets_unlocked (), .BR fputs_unlocked (), .BR getwc_unlocked (), .BR fgetwc_unlocked (), .BR fputwc_unlocked (), .BR putwc_unlocked (), .BR fgetws_unlocked (), .BR fputws_unlocked () T} Thread safety T{ MT-Safe race:stream T} T{ .BR getchar_unlocked (), .BR getwchar_unlocked () T} Thread safety T{ MT-Unsafe race:stdin T} T{ .BR putchar_unlocked (), .BR putwchar_unlocked () T} Thread safety T{ MT-Unsafe race:stdout T} T{ .BR feof_unlocked (), .BR ferror_unlocked (), .BR fileno_unlocked () T} Thread safety MT-Safe .TE .hy .ad .sp 1 .SH STANDARDS The four functions .BR getc_unlocked (), .BR getchar_unlocked (), .BR putc_unlocked (), .BR putchar_unlocked () are in POSIX.1-2001 and POSIX.1-2008. .PP The nonstandard .BR *_unlocked () variants occur on a few UNIX systems, and are available in recent glibc. .\" E.g., in HP-UX 10.0. In HP-UX 10.30 they are called obsolescent, and .\" moved to a compatibility library. .\" Available in HP-UX 10.0: clearerr_unlocked, fclose_unlocked, .\" feof_unlocked, ferror_unlocked, fflush_unlocked, fgets_unlocked, .\" fgetwc_unlocked, fgetws_unlocked, fileno_unlocked, fputs_unlocked, .\" fputwc_unlocked, fputws_unlocked, fread_unlocked, fseek_unlocked, .\" ftell_unlocked, fwrite_unlocked, getc_unlocked, getchar_unlocked, .\" getw_unlocked, getwc_unlocked, getwchar_unlocked, putc_unlocked, .\" putchar_unlocked, puts_unlocked, putws_unlocked, putw_unlocked, .\" putwc_unlocked, putwchar_unlocked, rewind_unlocked, setvbuf_unlocked, .\" ungetc_unlocked, ungetwc_unlocked. They should probably not be used. .SH SEE ALSO .BR flockfile (3), .BR stdio (3)