NAME
flopen
—
Reliably open and lock a
file
LIBRARY
library “libutil”
SYNOPSIS
#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
Theflopen
()
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).
SEE ALSO
AUTHORS
The flopen
function and this manual page
were written by Dag-Erling Smørgrav
<des@FreeBSD.org>.