Go의 파일 변경 감지
파일 변경 감지는 파일 편집, 버전 제어, 데이터 무결성 모니터링과 같은 다양한 애플리케이션에 매우 중요합니다. . Go에서 표준 라이브러리는 파일 변경 알림을 위해 Unix의 fcntl() 함수와 직접적으로 동등한 기능을 제공하지 않습니다. 그러나 이 작업을 수행하기 위한 다른 접근 방식이 있습니다.
한 가지 크로스 플랫폼 솔루션은 os.Stat() 함수를 사용하여 파일의 현재 크기 및 수정 시간을 처음에 얻은 초기 상태와 비교하는 것입니다. 모니터링 프로세스의 불일치가 발견되면 파일이 변경된 것으로 간주됩니다. 이 접근 방식의 샘플 구현:
func watchFile(filePath string) error { initialStat, err := os.Stat(filePath) if err != nil { return err } for { stat, err := os.Stat(filePath) if err != nil { return err } if stat.Size() != initialStat.Size() || stat.ModTime() != initialStat.ModTime() { break } time.Sleep(1 * time.Second) } return nil }
이 기능은 다음과 같은 방식으로 활용될 수 있습니다.
doneChan := make(chan bool) go func(doneChan chan bool) { defer func() { doneChan <- true }() err := watchFile("/path/to/file") if err != nil { fmt.Println(err) } fmt.Println("File has been changed") }(doneChan) <-doneChan
이 접근 방식은 단순성과 플랫폼 간 호환성을 제공하지만 그렇지 않을 수도 있습니다. 파일 변경이 자주 발생하는 시나리오에 가장 효율적인 솔루션입니다. 더 높은 성능이 필요한 애플리케이션의 경우 시스템 호출이나 파일 감시자를 사용하는 플랫폼별 솔루션을 고려해 볼 가치가 있습니다.
위 내용은 Go에서 파일 변경 사항을 효율적으로 감지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!