Notificación de cambio de sistema de archivos a nivel de archivo en Mac OS X

Quiero que se notifique a mi código cuando se modifique cualquier archivo bajo (directa o indirectamente) un directorio determinado. Por "modificado", quiero decir que quiero que se notifique a mi código cada vez que se modifique el contenido de un archivo, se cambie su nombre o se elimine; o si se agrega un nuevo archivo. Para mi aplicación, puede haber miles de archivos.

Miré como FSEvents, pero su Descripción de la tecnología dice, en parte:

El punto importante que se debe quitar es que la granularidad de las notificaciones se encuentra en un nivel de directorio. Solo le dice que algo en el directorio ha cambiado, pero no le dice qué ha cambiado.

También dice:

La API de eventos del sistema de archivos tampoco está diseñada para descubrir cuándo cambia un archivo en particular. Para tales propósitos, el mecanismo kqueues es más apropiado.

Sin embargo, para usar kqueue en un archivo dado, uno tiene que abrir el archivo para obtener un descriptor de archivo. No es práctico administrar miles de descriptores de archivos (y de todos modos probablemente superaría el número máximo permitido de descriptores de archivos abiertos).

Curiosamente, bajo Windows, puedo usar elReadDirectoryChangesW() Funciona y hace precisamente lo que quiero.

Entonces, ¿cómo se puede hacer lo que quiero bajo Mac OS X? O, preguntado de otra manera: ¿cómo se haría uno para escribir el equivalente deReadDirectoryChangesW() para Mac OS X en el espacio de usuario (y hacerlo de manera muy eficiente)?

Respuestas a la pregunta(4)

Su respuesta a la pregunta