The
lockf
utility acquires an exclusive lock on a
file,
creating it if necessary,
and removing the file on exit unless explicitly told not to.
While holding the lock, it executes a
command
with optional
arguments.
After the
command
completes,
lockf
releases the lock, and removes the
file
unless the
-k
option is specified.
BSD Ns -style
locking is used, as described in
flock(2);
the mere existence of the
file
is not considered to constitute a lock.
If the
lockf
utility is being used to facilitate concurrency between a number
of processes, it is recommended that the
-k
option be used.
This will guarantee lock ordering, as well as implement
a performance enhanced algorithm which minimizes CPU load associated
with concurrent unlink, drop and re-acquire activity.
It should be noted
that if the
-k
option is not used, then no guarantees around lock ordering can be made.
The following options are supported:
-k
|
Causes the lock file to be kept (not removed) after the command
completes.
|
-s
|
Causes
lockf
to operate silently.
Failure to acquire the lock is indicated only in the exit status.
|
-n
|
Causes
lockf
to fail if the specified lock
file
does not exist. If
-n
is not specified,
lockf
will create
file
if necessary.
|
-t seconds
|
|
Specifies a timeout for waiting for the lock.
By default,
lockf
waits indefinitely to acquire the lock.
If a timeout is specified with this option,
lockf
will wait at most the given number of
seconds
before giving up.
A timeout of 0 may be given, in which case
lockf
will fail unless it can acquire the lock immediately.
When a lock times out,
command
is
not
executed.
|
In no event will
lockf
break a lock that is held by another process.