flockfile(3)flockfile(3)NAME
flockfile, ftrylockfilefunlockfile, stdio - locking functions
SYNOPSIS
#include <stdio.h>
void flockfile(
FILE * file ); int ftrylockfile
FILE * file ); void funlockfile
FILE * file );
LIBRARY
Standard C Library (libc)
STANDARDS
Interfaces documented on this reference page conform to industry stan‐
dards as follows:
flockfile, funlockfile: POSIX.1c, XSH5.0
ftrylockfile: XSH5.0
Refer to the standards(5) reference page for more information about
industry standards and associated tags.
PARAMETERS
Specifies the stream to be locked.
DESCRIPTION
The flockfile(), ftrylockfile, and funlockfile functions provide for
explicit application-level locking of stdio (FILE*) objects. These
functions can be used by a thread to delineate a sequence of I/O state‐
ments that are to be executed as a unit.
The flockfile() function locks a stdio stream so that a thread can have
exclusive use of that stream for multiple I/O operations. Use the
flockfile() function for a thread that wishes to ensure that the output
of several printf() functions, for example, is not garbled by another
thread also trying to use printf().
The ftrylockfile() function is used by a thread to acquire ownership of
a stdio (FILE*) object if the object is available. The ftrylockfile()
function is a non-blocking version of flockfile().
The funlockfile() function unlocks a stdio stream, causing the thread
that had been holding the lock to relinquish exclusive use of the
stream.
The behavior of the flockfile() and funlockfile() functions is unspeci‐
fied if the file parameter does not point to a valid FILE structure.
The behavior of funlockfile() is also unspecified if a thread other
than the current owner calls funlockfile().
Matching flockfile() and funlockfile() calls can be nested. If the
stream has been locked recursively, it will remain locked until the
last matching funlockfile() is called.
RETURN VALUE
None for flockfile() and funlockfile(). The ftrylockfile() function
returns zero for success and non-zero to indicate that the lock cannot
be acquired.
SEE ALSO
Functions: getc_unlocked(3), putc_unlocked(3)flockfile(3)