The Single UNIX ® Specification, Version 2
Copyright © 1997 The Open Group


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.




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.




getc(), getchar(), putc(), putchar(), <stdio.h>.


Derived from the POSIX Threads Extension (1003.1c-1995)

UNIX ® is a registered Trademark of The Open Group.
Copyright © 1997 The Open Group
[ Main Index | XSH | XCU | XBD | XCURSES | XNS ]