c++ - FSEvent 无法在根上下文 : Error: FSEventStreamCreate: _FSEventStreamCreate: ERROR: watch_path() failed for 中创建流

标签 c++ c macos cocoa fsevents

我想在 mac 上使用 FSEvent 监控目录。

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

错误是: FSEventStreamCreate: _FSEventStreamCreate: ERROR: watch_path() failed for 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() 中的标志导致问题,我不知道为什么。

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

关于c++ - FSEvent 无法在根上下文 : Error: FSEventStreamCreate: _FSEventStreamCreate: ERROR: watch_path() failed for 中创建流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27041728/

相关文章:

c++ - 使用 Xcode 和 CMake 构建 CUDA 库失败

C——基本结构问题

objective-c - 轻松修补 OS X 应用程序

objective-c - 将首选项窗口添加到 Mac 应用程序

swift - 将 TensorFlow 导入 Xcode : The active toolchain is not compatible with playgrounds

c++ - 这个三元条件表达式是如何执行的?

c++ - 将原始对象写入/读取到文件

java - 如何使用 JNA 将二维数组从 Java 传递到 C

c - 使用数组表示法访问函数内的三重指针

c - C 中使用数组变量的指针运算