Mutual exclusion between processes using flock and lockf. A file is considered locked if either of these mechanisms works.
These locks are OS-level but are Local (will not work across computers even if they mount the same directory).
create ?close_on_exec ?message path
tries to create a file at path
containing the
text message
, which defaults to the pid of the locking process. It returns true on
success, false on failure. Note: there is no way to release the lock or the fd
created inside! It will only be released when the process dies. If close_on_exec is
false, then the lock will not be released until children created via fork and exec
also terminate. If not specified, close_on_exec=true. Note that by default, the lock
file is not cleaned up for you when the process exits. If you pass
unlink_on_exit:true
, an at_exit handler will be set up to remove the lock-file on
program termination.
The lock file is created with mode 664, so will not be world-writable even with umask 0.
create_exn ?message path
is like create
except that it throws an exception on
failure instead of returning a boolean value
blocking_create t
tries to create the lock. If another process holds the lock this
function will wait until it is released or until timeout expires.
is_locked path
returns true when the file at path
exists and is locked, false
otherwise. Requires write permission for the lock file.
get_pid path
reads the lock file at path
and returns the pid in the
file. Returns None
if the file cannot be read, or if the file contains
a message that is not an int.