table of contents
FLOPEN(3) | Library Functions Manual | FLOPEN(3) |
NAME¶
flopen
— reliably
open and lock a file
LIBRARY¶
library “libbsd”
SYNOPSIS¶
#include
<sys/fcntl.h>
#include <bsd/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).
SEE ALSO¶
AUTHORS¶
The flopen
function and this manual page
were written by Dag-Erling Smørgrav
⟨des@FreeBSD.org⟩.
June 6, 2009 | Debian |