Deseo que se notifique mi código cuando se modifique cualquier archivo bajo (directa o indirectamente) de un directorio determinado. Con "modificado", quiero decir que quiero que se notifique mi código siempre que se modifique el contenido de un archivo, se renombre o se elimine; o si se agrega un nuevo archivo. Para mi aplicación, puede haber miles de archivos.Notificación de cambio del sistema de archivos a nivel de archivos en Mac OS X
Miré como FSEvents, pero su general Tecnología dice, en parte:
El punto importante para llevar es que la granularidad de notificaciones se encuentra en un nivel de directorio. Solo le dice que algo en el directorio ha cambiado, pero no le dice qué cambió.
También dice:
El archivo de eventos del sistema API también no está diseñado para encontrar a cabo cuando un cambios en los archivos particulares. Para tales propósitos, el mecanismo de kqueues es más apropiado.
Sin embargo, para usar kqueue en un archivo dado, hay que abrir el archivo para obtener un descriptor de archivo. No es práctico administrar miles de descriptores de archivos (y probablemente excedan la cantidad máxima permitida de descriptores de archivos abiertos de todos modos).
Curiosamente, en Windows, puedo usar la función ReadDirectoryChangesW()
y hace exactamente lo que quiero.
¿Cómo puedo hacer lo que quiero con Mac OS X? O bien, preguntado de otra manera: ¿cómo se puede escribir el equivalente de ReadDirectoryChangesW()
para Mac OS X en el espacio de usuario (y hacerlo de manera muy eficiente)?
En general, no me gusta la programación de Windows y prefiero mucho la programación Mac/Linux. Parece extraño que aparentemente haya al menos 1 cosa más fácil de hacer en Windows. –
Oh, hay muchas cosas más fáciles de hacer en Windows. Intenta hablar con SOAP usando Cocoa. NSArray es agradable, pero a veces un genérico de C# sería muy bienvenido. Mac no tiene nada ni cerca de ASP.NET (te estoy mirando, WebObjects). Amo a Cocoa; es de lejos el mejor marco que he encontrado. Pero cualquiera que piense que todo es mejor para los desarrolladores en Mac que en Windows no se ha desarrollado mucho en ambos. Para cosas como esta, todos estamos esperando el santo grial de zfs, lo que puede hacer que este tipo de cosas sea más fácil y más rápido. Algún día ... (Microsoft también tiene sus sueños de winfs ...) –
El problema es que estás agrupando la programación de Linux con la programación de Mac. Esto es muy fácil de hacer en Linux con inotifywait. – MarkovCh1