1. ホーム
  2. c++

[解決済み] C++でファイルの更新を監視するプログラムを作成するには?

2023-06-15 22:58:38

質問

例えば Visual Studio のように、外部のプログラムがファイルを変更したときにそれを検出し、ユーザーが選択した場合にファイルを再読み込みすることができるプログラムがたくさんあります。このようなことを C++ で比較的簡単に行う方法はありますか (必ずしもプラットフォーム非依存である必要はありません)。

どのように解決するのですか?

プラットフォームによって、いくつかの方法があります。 私なら以下の選択肢から選びます。

クロス プラットフォーム

Trolltech の Qt には、以下のようなオブジェクトがあります。 QFileSystemWatcher というオブジェクトがあり、ファイルやディレクトリを監視することができます。 この種の機能を提供する他のクロス プラットフォーム フレームワークもあると思いますが、私の経験では、これはかなりうまく機能します。

Windows (Win32)

というWin32のAPIがあります。 FindFirstChangeNotification という Win32 の API があり、これが仕事をします。 という api の小さなラッパークラスがある素敵な記事があります。 指定したディレクトリに変更があった場合に通知を受け取る方法 を使えば、すぐに始められます。

Windows (.NET Framework)

C++/CLIと.NET Frameworkの組み合わせでOKなら System.IO.FileSystemWatcher を選択する必要があります。 ファイルシステムの変更を監視する方法 このクラスを使って

オーエスエックス

があります。 FSEvent APIはOS X 10.5で新たに追加され、非常に充実した機能を備えています。

リナックス

使用方法 おしえさとす アレックスさんの回答にもあったように