FSEvent 无法在根上下文中创建流:错误:FSEventStreamCreate:_FSEventStreamCre

FSEvent failed to create stream in root context: Error: FSEventStreamCreate: _FSEventStreamCreate: ERROR: watch_path() failed for

本文关键字:错误 FSEventStreamCreate FSEventStreamCre 创建 上下文 FSEvent      更新时间:2023-10-16

我想使用 FSEvent 监视 mac 上的目录。

此错误是在根上下文中生成的。如果我在用户上下文中运行程序,它可以正常工作。

错误是: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;
    }

提前谢谢。

函数中的kFSEventStreamCreateFlagWatchRoot标志FSEventStreamCreate()导致问题,我不知道为什么。

但是当我删除该标志时,它也在根上下文和用户上下文中运行许多路径。