Código para monitor de directorio usando conceptos de Unix en lenguaje C

En un servidor, un proceso supervisa los archivos en un sistema de archivos Unix.

Si un cliente envía el nombre del archivo que se va a monitorear, el servidor debe enviar el informe al cliente si ese archivo se modificó o eliminó.

Para la comunicación servidor-cliente, debemos usar colas de mensajes o sockets.

Para cada cambio en el archivo, el servidor debe notificar ese cambio.

Para todos los cambios en todos los archivos, el servidor debe mantener un archivo de registro para que el usuario pueda verlo a través de la interfaz de línea de comandos.

El servidor podría usar dos hilos: uno para la comunicación, el otro para la supervisión.

¿Cómo puedes hacer esto eficientemente?

Echa un vistazo a inotify en http://en.wikipedia.org/wiki/Inotify – linux solo me temo.

BSD tiene kqueue – vea http://en.wikipedia.org/wiki/Kqueue .