summaryrefslogtreecommitdiff
path: root/usr/src/man/man3ucb/flock.3ucb
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/man/man3ucb/flock.3ucb')
-rw-r--r--usr/src/man/man3ucb/flock.3ucb154
1 files changed, 154 insertions, 0 deletions
diff --git a/usr/src/man/man3ucb/flock.3ucb b/usr/src/man/man3ucb/flock.3ucb
new file mode 100644
index 0000000000..a838b0a153
--- /dev/null
+++ b/usr/src/man/man3ucb/flock.3ucb
@@ -0,0 +1,154 @@
+'\" te
+.\" Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved.
+.\" Copyright (c) 1983 Regents of the University of California. All rights reserved. The Berkeley software License Agreement specifies the terms and conditions for redistribution.
+.TH flock 3UCB "30 Oct 2007" "SunOS 5.11" "SunOS/BSD Compatibility Library Functions"
+.SH NAME
+flock \- apply or remove an advisory lock on an open file
+.SH SYNOPSIS
+.LP
+.nf
+\fB/usr/ucb/cc\fR[ \fIflag\fR ... ] \fIfile\fR ...
+#include <sys/file.h>
+
+\fBint\fR \fBflock\fR( \fIfd\fR, \fIoperation\fR)
+
+\fBint\fR \fIfd\fR, \fIoperation\fR;
+.fi
+
+.SH DESCRIPTION
+.sp
+.LP
+\fBflock()\fR applies or removes an \fIadvisory\fR lock on the file associated
+with the file descriptor \fIfd\fR. The compatibility version of \fBflock()\fR
+has been implemented on top of \fBfcntl\fR(2) locking. It does not provide
+complete binary compatibility.
+.sp
+.LP
+Advisory locks allow cooperating processes to perform consistent operations on
+files, but do not guarantee exclusive access (that is, processes may still
+access files without using advisory locks, possibly resulting in
+inconsistencies).
+.sp
+.LP
+The locking mechanism allows two types of locks: shared locks and exclusive
+locks. More than one process may hold a shared lock for a file at any given
+time, but multiple exclusive, or both shared and exclusive, locks may not exist
+simultaneously on a file.
+.sp
+.LP
+A lock is applied by specifying an \fIoperation\fR parameter \fBLOCK_SH\fR for
+a shared lock or \fBLOCK_EX\fR for an exclusive lock. The \fIoperation\fR
+parameter may be ORed with \fBLOCK_NB\fR to make the operation non-blocking. To
+unlock an existing lock, the \fIoperation\fR should be \fBLOCK_UN.\fR
+.sp
+.LP
+Read permission is required on a file to obtain a shared lock, and write
+permission is required to obtain an exclusive lock. Locking a segment that is
+already locked by the calling process causes the old lock type to be removed
+and the new lock type to take effect.
+.sp
+.LP
+Requesting a lock on an object that is already locked normally causes the
+caller to block until the lock may be acquired. If \fBLOCK_NB\fR is included
+in \fIoperation\fR, then this will not happen; instead, the call will fail and
+the error \fBEWOULDBLOCK\fR will be returned.
+.SH RETURN VALUES
+.sp
+.LP
+\fBflock()\fR returns:
+.sp
+.ne 2
+.mk
+.na
+\fB\fB0\fR\fR
+.ad
+.RS 9n
+.rt
+on success.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fB\(mi1\fR\fR
+.ad
+.RS 9n
+.rt
+on failure and sets \fBerrno\fR to indicate the error.
+.RE
+
+.SH ERRORS
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEBADF\fR\fR
+.ad
+.RS 15n
+.rt
+The argument \fIfd\fR is an invalid descriptor.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEINVAL\fR\fR
+.ad
+.RS 15n
+.rt
+\fIoperation\fR is not a valid argument.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEOPNOTSUPP\fR\fR
+.ad
+.RS 15n
+.rt
+The argument \fIfd\fR refers to an object other than a file.
+.RE
+
+.sp
+.ne 2
+.mk
+.na
+\fB\fBEWOULDBLOCK\fR\fR
+.ad
+.RS 15n
+.rt
+The file is locked and the \fBLOCK_NB\fR option was specified.
+.RE
+
+.SH SEE ALSO
+.sp
+.LP
+\fBlockd\fR(1M), \fBchmod\fR(2), \fBclose\fR(2), \fBdup\fR(2), \fBexec\fR(2),
+\fBfcntl\fR(2), \fBfork\fR(2), \fBopen\fR(2), \fBlockf\fR(3C)
+.SH NOTES
+.sp
+.LP
+Use of these interfaces should be restricted to only applications written on
+BSD platforms. Use of these interfaces with any of the system libraries or in
+multi-thread applications is unsupported.
+.sp
+.LP
+Locks are on files, not file descriptors. That is, file descriptors duplicated
+through \fBdup\fR(2) or \fBfork\fR(2) do not result in multiple instances of a
+lock, but rather multiple references to a single lock. If a process holding a
+lock on a file forks and the child explicitly unlocks the file, the parent will
+lose its lock. Locks are not inherited by a child process.
+.sp
+.LP
+Processes blocked awaiting a lock may be awakened by signals.
+.sp
+.LP
+Mandatory locking may occur, depending on the mode bits of the file. See
+\fBchmod\fR(2).
+.sp
+.LP
+Locks obtained through the \fBflock()\fR mechanism under SunOS 4.1 were known
+only within the system on which they were placed. This is no longer true.