Package lock is a file locking library.
Internal call graph ▹
Internal call graph ▾
In the call graph viewer below, each node is a function belonging to this package and its children are the functions it calls—perhaps dynamically.
The root nodes are the entry points of the package: functions that may be called from outside the package. There may be non-exported or anonymous functions among them if they are called dynamically from another package.
Click a node to visit that function's source code.
From there you can visit its callers by
clicking its declaring
Functions may be omitted if they were determined to be unreachable in the particular programs or tests that were analyzed.
func Lock(name string) (io.Closer, error)
Lock locks the given file, creating the file if necessary. If the file already exists, it must have zero size or an error is returned. The lock is an exclusive lock (a write lock), but locked files should neither be read from nor written to. Such files should have zero size and only exist to co-ordinate ownership across processes.
A nil Closer is returned if an error occurred. Otherwise, close that Closer to release the lock.
On Linux, FreeBSD and OSX, a lock has the same semantics as fcntl(2)'s advisory locks. In particular, closing any other file descriptor for the same file will release the lock prematurely.
Attempting to lock a file that is already locked by the current process has undefined behavior.
On other operating systems, lock will fallback to using the presence and content of a file named name + '.lock' to implement locking behavior.