ホームページ > バックエンド開発 > Golang > ステータスポーリングを使用して Go でファイルの変更を検出するにはどうすればよいですか?

ステータスポーリングを使用して Go でファイルの変更を検出するにはどうすればよいですか?

DDD
リリース: 2024-12-02 21:31:16
オリジナル
728 人が閲覧しました

How Can I Detect File Changes in Go Using Status Polling?

ステータス ポーリングを使用して Go でファイルの変更を検出する

Go では、ステータス ポーリングを使用してファイルの変更を検出できます。 Go はファイル変更通知用の Unix fcntl() 関数と直接同等のものを提供しませんが、ステータスポーリングはクロスプラットフォームソリューションを提供します。

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
ログイン後にコピー

Thisこのソリューションはシステム コールの効率性を提供しませんが、すべてのプラットフォームで動作するシンプルなアプローチを提供し、さまざまなユースケースに十分である可能性があります。

以上がステータスポーリングを使用して Go でファイルの変更を検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート