//go:build unix package hostos import ( "os" "syscall" ) const ( LockShared = syscall.LOCK_SH LockExclusive = syscall.LOCK_EX LockNonBlocking = syscall.LOCK_NB ) func Lock(f *os.File, how int) error { for { err := syscall.Flock(int(f.Fd()), how) if err != syscall.EINTR { return err } } } func Unlock(f *os.File) error { return syscall.Flock(int(f.Fd()), syscall.LOCK_UN) }