FSEvent не удалось создать поток в корневом контексте: Ошибка: FSEventStreamCreate: _FSEventStreamCreate: ОШИБКА: ошибка watch_path () для

Я хочу контролировать каталоги на Mac с помощью FSEvent.

Эта ошибка генерируется в корневом контексте. Если я запускаю программу в контексте пользователя, она работает правильно.

Ошибка: FSEventStreamCreate: _FSEventStreamCreate: ОШИБКА: сбой watch_path () для some_path.

Я хочу посмотреть массив путей.
но создание потока не удалось.

он работает нормально для меньшего числа путей в корне.

код, который я использую для создания потока

    FSEventStreamContext * streamContext = (FSEventStreamContext *)malloc(sizeof(FSEventStreamContext));
streamContext->version = 0;
streamContext->info = NULL;//&fileDescriptor;
streamContext->retain = NULL;
streamContext->release = NULL;
streamContext->copyDescription = NULL;

/* Create the stream, passing in a callback */
stream = FSEventStreamCreate(
NULL,
&myCallbackFunction,
streamContext,
pathsToWatch,  /* This is the array of paths I am passing to watch, It work fine in user context for large number of objects too. */
kFSEventStreamEventIdSinceNow, /* Or a previous event ID */
latency,
kFSEventStreamCreateFlagNone | kFSEventStreamCreateFlagWatchRoot /* Flags explained in reference */
);

if (NULL == stream) /* Stream get NULL */
{
NSLog(@"Ruturning False : stream == NULL");
NSLog(@"FSEventStreamCreate  failed");
return;
}

Заранее спасибо.

3

Решение

kFSEventStreamCreateFlagWatchRoot флаг в функции FSEventStreamCreate() вызвать проблему, я не знаю почему.

Но когда я удаляю этот флаг, он запускается в корневом контексте и пользовательском контексте также для множества путей.

1

Другие решения


По вопросам рекламы [email protected]