inotify を使用してディレクトリを監視しようとしていますが、すべてのイベントに登録しています。現在、私のプロジェクトでは、ディレクトリに対して実行された MOVE_SELF 操作を追跡する必要があるため、監視対象のディレクトリが移動した新しい場所を検出できる必要があります。これを達成するために、監視対象のディレクトリの開いているファイル記述子 (int fd) の参照を保存しています。MOVE_SELF を取得すると、次を使用して新しいパスを取得しようとします。
//code to store a reference of file-descrptor of the monitored sirectory
fd = open(watchPath.c_str(), O_RDONLY)
//code to learn the new location of the moved directory
char fdpath[4096];
char path[4096];
sprintf(fdpath, "/proc/self/fd/%d", fd);
ssize_t sz = readlink(fdpath, path, sizeof(path) - 1); //Path will contain the new location after the move happens
ただし、これの副作用は、ディレクトリを削除した場合、保持している開いているファイル記述子がまだあるため、DELETE_SELF イベントが発生しないことです。この問題を回避する方法を誰かに教えてもらえますか?
ありがとう、 -サンディープ