'\" t .\" Copyright (C) 2001 Andries Brouwer . .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .TH unlocked_stdio 3 2023-10-31 "Linux man-pages 6.7" .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 .P .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 ); .P .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 *_Nullable " stream ); .P .BI "int fgetc_unlocked(FILE *" stream ); .BI "int fputc_unlocked(int " c ", FILE *" stream ); .P .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 ); .P .BI "char *fgets_unlocked(char " s "[restrict ." n "], int " n \ ", FILE *restrict " stream ); .BI "int fputs_unlocked(const char *restrict " s ", FILE *restrict " stream ); .P .B #include .P .BI "wint_t getwc_unlocked(FILE *" stream ); .B "wint_t getwchar_unlocked(void);" .BI "wint_t fgetwc_unlocked(FILE *" stream ); .P .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 ); .P .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 .P .RS -4 Feature Test Macro Requirements for glibc (see .BR feature_test_macros (7)): .RE .P .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 .P .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 .P .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 .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). .TS allbox; lb lb lbx l l l. Interface Attribute Value T{ .na .nh .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{ .na .nh MT-Safe race:stream T} T{ .na .nh .BR getchar_unlocked (), .BR getwchar_unlocked () T} Thread safety T{ .na .nh MT-Unsafe race:stdin T} T{ .na .nh .BR putchar_unlocked (), .BR putwchar_unlocked () T} Thread safety T{ .na .nh MT-Unsafe race:stdout T} T{ .na .nh .BR feof_unlocked (), .BR ferror_unlocked (), .BR fileno_unlocked () T} Thread safety MT-Safe .TE .SH STANDARDS .TP .BR getc_unlocked () .TQ .BR getchar_unlocked () .TQ .BR putc_unlocked () .TQ .BR putchar_unlocked () POSIX.1-2008. .TP Others: None. .SH HISTORY .TP .BR getc_unlocked () .TQ .BR getchar_unlocked () .TQ .BR putc_unlocked () .TQ .BR putchar_unlocked () POSIX.1-2001. .\" 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. .SH SEE ALSO .BR flockfile (3), .BR stdio (3)