| .\" Copyright (C) 2001 Andries Brouwer <aeb@cwi.nl>. |
| .\" |
| .\" %%%LICENSE_START(VERBATIM) |
| .\" Permission is granted to make and distribute verbatim copies of this |
| .\" manual provided the copyright notice and this permission notice are |
| .\" preserved on all copies. |
| .\" |
| .\" Permission is granted to copy and distribute modified versions of this |
| .\" manual under the conditions for verbatim copying, provided that the |
| .\" entire resulting derived work is distributed under the terms of a |
| .\" permission notice identical to this one. |
| .\" |
| .\" Since the Linux kernel and libraries are constantly changing, this |
| .\" manual page may be incorrect or out-of-date. The author(s) assume no |
| .\" responsibility for errors or omissions, or for damages resulting from |
| .\" the use of the information contained herein. The author(s) may not |
| .\" have taken the same level of care in the production of this manual, |
| .\" which is licensed free of charge, as they might when working |
| .\" professionally. |
| .\" |
| .\" Formatted or processed versions of this manual, if unaccompanied by |
| .\" the source, must acknowledge the copyright and authors of this work. |
| .\" %%%LICENSE_END |
| .\" |
| .TH UNLOCKED_STDIO 3 2021-03-22 "" "Linux Programmer's Manual" |
| .SH NAME |
| getc_unlocked, getchar_unlocked, putc_unlocked, |
| putchar_unlocked \- nonlocking stdio functions |
| .SH SYNOPSIS |
| .nf |
| .B #include <stdio.h> |
| .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 *restrict " ptr ", size_t " size ", size_t " n , |
| .BI " FILE *restrict " stream ); |
| .BI "size_t fwrite_unlocked(const void *restrict " ptr ", size_t " size \ |
| ", size_t " n , |
| .BI " FILE *restrict " stream ); |
| .PP |
| .BI "char *fgets_unlocked(char *restrict " s ", int " n \ |
| ", FILE *restrict " stream ); |
| .BI "int fputs_unlocked(const char *restrict " s ", FILE *restrict " stream ); |
| .PP |
| .B #include <wchar.h> |
| .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 *restrict " ws ", 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 |
| /* Since 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 since 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 CONFORMING TO |
| 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) |