Я пытаюсь отслеживать каталог с помощью 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, потому что у меня все еще есть открытый дескриптор файла. Может ли кто-нибудь предложить мне, как обойти эту проблему?
Спасибо, - Сандип
inotify_add_watch
? - person Sam Miller   schedule 19.09.2013