Skip to content

brandonkramer/filelock

Repository files navigation

filelock

Cross-platform advisory file locks for single-instance services, registries, and on-disk critical sections.

Quick start

// Daemon single-instance lock (non-blocking + PID marker)
release, err := filelock.Acquire(context.Background(), "/var/run/myapp/daemon.lock", filelock.WritePID())
if err != nil {
    return err
}
defer release()

// Registry / state file sidecar lock
err = filelock.WithSidecar(context.Background(), "/var/lib/myapp/state.json", filelock.DefaultSidecar, func() error {
    return updateState()
})

Options

Option Use with Effect
WritePID() Acquire, With Write holder PID into lock file
Blocking() Acquire Wait for lock instead of returning ErrBusy
NonBlocking() With Try once; return ErrBusy when held
FileMode(mode) both Permission bits for new lock files

About

Cross-platform advisory file locks for single-instance services, registries, and on-disk critical sections.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors