libs6lock
s6
Software
skarnet.org
The s6lockd program
s6lockd is the s6lock daemon. It is a program that manages
a set of lock files in a given directory, and associated timeouts.
Interface
s6lockd does not fork, does not background itself automatically,
and does not use syslog. It is not meant to be run directly by the
user: it will be spawned by the
s6lock client library.
There are 2 ways to use s6lockd:
- Use the s6lock_startf() library call.
A s6lockd child will then be spawned from your
calling process, and automatically reaped when you call
s6lock_end(). It requires care with applications that
trap SIGCHLD. It also requires care with lock file permissions:
a s6lockd instance might not be able
to open a lock file created by a former instance run by another
client with different permissions.
- Use the s6lock_start() library call, together with a
s6lockd service.
For once, this is the recommended setup: s6lockd creates empty
lock files, and having all s6lockd instances run under the same user
simplifies permissions management considerably.
When run as a service, s6lockd has no "standalone" mode: it is
designed to work with a Unix
domain superserver, like
s6-ipcserver.
s6lockd follows the UCSPI
interface, it can be directly executed from the superserver.
Notes
- Unix does not natively provide a way to stop blocking on a lock
acquisition after a timeout. To emulate such behaviour, s6lockd actually
spawns a s6lockd-helper child per
requested lock.