ファイルを開くこととファイルにアクセスすることの違いは何ですか?
私は fanotify を使用しており、FAN_ACCESS イベントにのみ関心があります。プログラムを起動し、ファイルを編集しようとすると、プログラムは必要な処理を実行します。
そうは言っても、私はいくつかのテストを書いており、いくつかのテストケースでは次のようなコードを使用しています:
filesystem::ofstream acces_to_file;
acces_to_file.open('/tmp/test_file.txt');
acces_to_file << "Some text" << endl;
acces_to_file.close();
しかし驚くべきことに、このアクセスは私のプログラムでは検出されません。nanoから同じファイルにアクセスし(前述のプログラムを再起動しなくても)、すべてが再び機能します。
そのため、ファイルへのアクセスとファイルを開くことには何らかの違いが必要だと思います。
プログラムは常に root ユーザーによって実行されます。
次のようにフラグを設定します。
fanotify_mark(fd, FAN_MARK_ADD, FAN_ACCESS | FAN_EVENT_ON_CHILD, AT_FDCWD, MONITOR_ROOT_PATH);