diff options
Diffstat (limited to 'man3/lockf.3')
-rw-r--r-- | man3/lockf.3 | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/man3/lockf.3 b/man3/lockf.3 new file mode 100644 index 000000000..58b4e7544 --- /dev/null +++ b/man3/lockf.3 @@ -0,0 +1,124 @@ +.\" Copyright 1997 Nicolás Lichtmaier <nick@debian.org> +.\" Created Thu Aug 7 00:44:00 ART 1997 +.\" +.\" This is free documentation; you can redistribute it and/or +.\" modify it under the terms of the GNU General Public License as +.\" published by the Free Software Foundation; either version 2 of +.\" the License, or (at your option) any later version. +.\" +.\" The GNU General Public License's references to "object code" +.\" and "executables" are to be interpreted as the output of any +.\" document formatting or typesetting system, including +.\" intermediate and printed output. +.\" +.\" This manual is distributed in the hope that it will be useful, +.\" but WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.\" Added section stuff, aeb, 2002-04-22. +.\" Corrected include file, drepper, 2003-06-15. +.\" +.TH LOCKF 3 2002-04-22 "Linux 2.0" "Linux Programmer's Manual" +.SH NAME +lockf \- apply, test or remove a POSIX lock on an open file +.SH SYNOPSIS +.B #include <unistd.h> +.sp +.BR "int lockf(int " fd ", int " cmd ", off_t " len ); +.SH DESCRIPTION +Apply, test or remove a POSIX lock on a section of an open file. +The file is specified by +.IR fd , +a file descriptor open for writing, the action by +.IR cmd , +and the section consists of byte positions +.IR pos .. pos + len -1 +if len is positive, and +.IR pos - len .. pos -1 +if len is negative, where +.I pos +is the current file position, and if +.I len +is zero, the section extends from the current file position to +infinity, encompassing the present and future end-of-file positions. +In all cases, the section may extend past current end-of-file. +.LP +On Linux, this call is just an interface for +.BR fcntl (2). +(In general, the relation between +.B lockf +and +.B fcntl +is unspecified.) +.LP +Valid operations are given below: +.TP +.B F_LOCK +Set an exclusive lock on the specified section of the file. +If (part of) this section is already locked, the call +blocks until the previous lock is released. +If this section overlaps an earlier locked section, +both are merged. +File locks are released as soon as the process holding the locks +closes some file descriptor for the file. A child process does not +inherit these locks. +.TP +.B F_TLOCK +Same as +.B F_LOCK +but the call never blocks and returns an error instead if the file is +already locked. +.TP +.B F_ULOCK +Unlock the indicated section of the file. +This may cause a locked section to be split into two locked sections. +.TP +.B F_TEST +Test the lock: return 0 if the specified section +is unlocked or locked by this process; return \-1, set +.I errno +to +.BR EACCES , +if another process holds a lock. +.SH "RETURN VALUE" +On success, zero is returned. On error, \-1 is returned, and +.I errno +is set appropriately. +.SH ERRORS +.TP +.B EAGAIN +The file is locked and +.B F_TLOCK +or +.B F_TEST +was specified, or the operation is prohibited because the file has +been memory-mapped by another process. +.TP +.B EBADF +.I fd +is not an open file descriptor. +.TP +.B EDEADLK +The command was +.B T_LOCK +and this lock operation would cause a deadlock. +.TP +.B EINVAL +An invalid operation was specified in +.IR fd . +.TP +.B ENOLCK +Too many segment locks open, lock table is full. +.SH "CONFORMING TO" +SYSV, POSIX 1003.1-2001 +.SH "SEE ALSO" +.BR fcntl (2), +.BR flock (2) +.br +There are also +.I locks.txt +and +.I mandatory.txt +in +.IR /usr/src/linux/Documentation . |