Система inotify, использует смежные числа в качестве дескрипторов просмотра, допустим, вы хотите просмотреть 3 каталога: ../A, ../B и ../C, если, скажем, я создаю файл внутри ../A, тогда возвращаемый дескриптор watch из read () будет равен 1., если я создам файл внутри ../C, дескриптор watch будет равен 3 и так далее. Таким образом, ассоциация довольно проста: вы можете создать массив с путями и применить inotify_add_watch () к каждому из них, а затем, если событие имеет дескриптор наблюдения x, просто собрать воедино pathsArray [x-1] с event-> name и у вас есть путь :)
std::string getPathFromEvent(struct inotify_event *ptr){
std::stringstream builder ;
builder<<directories->DetectedDirectories.operator[](ptr->wd-1).string();
builder<<ptr->name;
return builder.str();
}