「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ステータスポーリングを使用して、GOのファイルの変更を検出するにはどうすればよいですか?

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

2025-02-16に投稿されました
ブラウズ:857

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

を検出するステータスポーリング

を使用して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  

このソリューションは、システムコールの効率を提供するのではなく、すべてのプラットフォームで機能し、さまざまなユースケースで十分な単純なアプローチを提供します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3