getc_unlocked, getchar_unlocked, putc_unlocked, putchar_unlocked - stdio with explicit client locking
#include <stdio.h> int getc_unlocked(FILE *stream); int getchar_unlocked(void); int putc_unlocked(int c, FILE *stream); int putchar_unlocked(int c);
Versions of the functions getc(), getchar(), putc(), and putchar() respectively named getc_unlocked(), getchar_unlocked(), putc_unlocked(), and putchar_unlocked() are provided which are functionally identical to the original versions with the exception that they are not required to be implemented in a thread-safe manner. They may only safely be used within a scope protected by flockfile() (or ftrylockfile()) and funlockfile(). These functions may safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the ( FILE *) object, as is the case after a successful call of the flockfile() or ftrylockfile() functions.
See getc(), getchar(), putc(), and putchar().
No errors are defined.
None.
Because they may be implemented as macros, getc_unlocked() and putc_unlocked() may treat incorrectly a stream argument with side effects. In particular, getc_unlocked(*f++) and putc_unlocked(*f++) will not necessarily work as expected. Therefore, use of these functions should be preceded by the appropriate "#undef getc_unlocked" or "#undef putc_unlocked" statement in such situations.
None.
getc(), getchar(), putc(), putchar(), <stdio.h>.
Derived from the POSIX Threads Extension (1003.1c-1995)