#include <sys/fcntl.h>
#include <libutil.h> int
flopen (const char *path int flags); int
flopen (const char *path int flags mode_t mode);
DESCRIPTION
The
flopen ();
function opens or creates a file and acquires an exclusive lock on it.
It is essentially equivalent with calling
open ();
with the same parameters followed by
flock ();
with an
operation
argument of
LOCK_EX
except that
flopen ();
will attempt to detect and handle races that may occur between opening
/ creating the file and locking it.
Thus, it is well suited for opening lock files, PID files, spool
files, mailboxes and other kinds of files which are used for
synchronization between processes.
If
flags
includes
O_NONBLOCK
and the file is already locked,
flopen ();
will fail and set
errno
to
EWOULDBLOCK
As with
open (,);
the additional
mode
argument is required if
flags
includes
O_CREAT
RETURN VALUES
If successful,
flopen ();
returns a valid file descriptor.
Otherwise, it returns -1, and sets
errno
as described in
flock(2)
and
open(2).