Program: netlock
When locking files, we recommend that
you use
flock
when possible. However, on some systems,
flock
’s locking strategy is not reliable.
For example, the person who built Perl on your system configured
flock
to use a version of file locking that
didn’t even try to work over the Net, or you’re on the
increasingly rare system where no flock
emulation
exists at all.
The following program and module provide a basic implementation of a
file locking mechanism. Unlike a normal flock
,
with this module you lock file names, not file
descriptors.
Thus, you can use it to lock directories, domain sockets, and other non-regular files. You can even lock files that don’t exist yet. It uses a directory created at the same level in the directory structure as the locked file, so you must be able to write to the enclosing directory of the file you wish to lock. A sentinel file within the lock directory contains the owner of the lock. This is also useful with Section 7.8, because you can lock the filename even though the file that has that name changes.
The nflock
function takes one or two arguments.
The first is the pathname to lock; the second is the optional amount
of time to wait for the lock. The function returns true if the lock
is granted, false if the timeout expired, and raises an exception
should various improbable events occur, like being unable to write
the directory.
Set the $File::LockDir::Debug
variable to true to make the module emit messages if it stalls waiting for ...
Get Perl Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.