lock_file_unix.go 429 B

1234567891011121314151617181920212223
  1. // +build darwin dragonfly freebsd linux netbsd openbsd plan9
  2. package daemon
  3. import (
  4. "syscall"
  5. )
  6. func lockFile(fd uintptr) error {
  7. err := syscall.Flock(int(fd), syscall.LOCK_EX|syscall.LOCK_NB)
  8. if err == syscall.EWOULDBLOCK {
  9. err = ErrWouldBlock
  10. }
  11. return err
  12. }
  13. func unlockFile(fd uintptr) error {
  14. err := syscall.Flock(int(fd), syscall.LOCK_UN)
  15. if err == syscall.EWOULDBLOCK {
  16. err = ErrWouldBlock
  17. }
  18. return err
  19. }