2010-12-12 13 views
6

Así que estoy tratando de escribir un programa en C que use inotify. He usado pyinotify antes, así que entiendo cómo funciona. Sin embargo, sigo una guía y me dice que incluya <linux/inotify.h>. El problema es que este encabezado solo tiene definiciones de macro, no los prototipos de funciton. Parece que las funciones están prototipadas en <sys/inotify.h>.inotify C headers

Mi pregunta es ¿cuál es la diferencia entre linux/inotify.h y sys/inotify.h? ¿Por qué hay ambos?

Respuesta

7

sys/inotify.h es parte de la GNU C library. Expone las estructuras y funciones que su programa utilizará para recibir notificaciones de cambio del sistema de archivos. Se puede considerar como la API pública del sistema de notificación.

linux/inotify.h es parte del kernel de Linux. Define las estructuras y constantes del kernel utilizadas para implementar el sistema de notificación en sí. No debe incluir ese archivo a menos que esté escribiendo algo así como un módulo kernel, porque es específico de Linux y por lo tanto no portátil.

+0

sys/inotify.h no es parte de la biblioteca estándar! (Es, sin embargo, parte de las bibliotecas normalmente disponibles en un cuadro de Linux) –

+0

@Billy, my 'sys/inotify.h' dice' Este archivo es parte de la biblioteca C de GNU' justo en la parte superior del archivo, y mi administrador de paquetes dice que está instalado por 'glibc'. ¿Qué dice el tuyo? –

+2

@ Frédéric: Biblioteca GNU C! = Biblioteca estándar. Biblioteca estándar == 'ISO/IEC 9899: 1990' o' ISO/IEC 9899: 1999'. –

Cuestiones relacionadas