Можно ли получить имя файла из идентификатора FSEENT?

StackOverflow https://stackoverflow.com//questions/12693208

  •  12-12-2019
  •  | 
  •  

Вопрос

Я создал простую файловую систему наблюдателя на C ++, используя API MAC-файловую систему API, как документировано здесь: разработчик Apple Doc . Мой вопрос в названии. Как мне получить путь того, что было изменено? Массив EventPaths дает мне только путь родительского каталога (или устанавливать их), что я по сути смотрю. Но не базовая запись каталога, которая была изменена.

Я могу получить полезную информацию, используя обратный вызов, то есть.:

   static void mycallback(
            ConstFSEventStreamRef streamRef,
            void *clientCallBackInfo,
            size_t numEvents,
            void *eventPaths,
            const FSEventStreamEventFlags eventFlags[],
            const FSEventStreamEventId eventIds[])
.

Я думаю, что, возможно, имя можно извлечь из одного из этих предметов?

Редактировать:

Например, можно найти, что файл создан в этом случае A

kfseventstreameventflagitemcreated

поднят. Но как мне идти о том, чтобы получить фактическое название этого предмета? (Точно так же для других событий, как при удалении элемента и т. Д.).

Редактировать 2:

Я начинаю думать, что нельзя делать то, что я хочу. Из FS Tech Обзор :

"Важный момент, чтобы убрать то, что гранулярность уведомлений находится на уровне каталога. Он говорит вам только в том, что что-то в каталоге изменилось, но не говорит вам, что изменилось».

aka. Bugger.

ура,

Бен.

Это было полезно?

Решение

На самом деле, это возможно, но только на 10,7+.Проверьте флаг kfseventstreamcreateflagfileereamcreateflagfileereereate for fseventstreamcreate (docs здесь).

Другие советы

К сожалению, как я обнаружил, это невозможно;Смотрите FS Tech Обзор для объяснения / мотивации.Работа - это было бы сделать снимок каталога, а затем обнаружено, когда изменение обнаружено, возьмите новый снимок и разверните его с оригиналом, чтобы найти конкретные записи каталогов (и их имена), которые изменились.

Редактировать: можно в>= 10,7 (см. Выбранный ответ)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top