golang 文件锁
func TryLockFile(filePath string) (bool, *os.File) { file, err := os.OpenFile(filePath, os.O_CREATE|os.O_RDWR, 0644) if err != nil { return false, nil } err = syscall.Flock(int(file.Fd()), syscall.LOCK_EX|syscall.LOCK_NB) if err != nil { file.Close() return false, nil } log.Debug("TryLockFile: %s", filePath) return true, file } func UnlockFile(file *os.File) error { err := syscall.Flock(int(file.Fd()), syscall.LOCK_UN) if err != nil { return fmt.Errorf("error unlocking file: %w", err) } err = file.Close() if err != nil { return fmt.Errorf("error closing file: %w", err) } log.Debug("UnlockFile: %s", file.Name()) return nil }
posted on 2025-05-28 06:35 running-fly 阅读(17) 评论(0) 收藏 举报
浙公网安备 33010602011771号