Détecter les modifications de fichiers dans Go à l'aide de l'interrogation d'état
Dans Go, vous pouvez détecter lorsqu'un fichier change à l'aide de l'interrogation d'état. Bien que Go n'offre pas d'équivalent direct à la fonction Unix fcntl() pour les notifications de modifications de fichiers, l'interrogation d'état fournit une solution multiplateforme :
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 }
Utilisation :
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
Ceci La solution n'offre pas l'efficacité d'un appel système mais propose une approche simple qui fonctionne sur toutes les plateformes et peut suffire à divers cas d'utilisation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!