2010-12-12 16 views
6

Quindi sto provando a scrivere un programma C che utilizza inotify. Ho usato pyinotify prima quindi ho capito come funziona. Tuttavia, sto seguendo alcune guide e mi dice di includere <linux/inotify.h>. Il problema è che questa intestazione ha solo definizioni di macro, non i prototipi di funciton. Sembra che le funzioni siano prototipate in <sys/inotify.h>.inotify C headers

La mia domanda è qual è la differenza tra linux/inotify.h e sys/inotify.h? Perché ci sono entrambi?

risposta

7

sys/inotify.h è parte del GNU C library. Espone le strutture e le funzioni che il programma utilizzerà per ricevere notifiche di cambio del filesystem. Può essere considerato come l'API pubblica del sistema di notifica.

linux/inotify.h è parte del kernel Linux. Definisce le strutture e le costanti del kernel utilizzate per implementare il sistema di notifica stesso. Non dovresti includere quel file a meno che tu non stia scrivendo qualcosa come un modulo del kernel, perché è specifico per Linux e quindi non è portatile.

+0

sys/inotify.h non fa parte della libreria standard! (È, tuttavia, parte delle librerie tipicamente disponibili su una macchina Linux) –

+0

@Billy, il mio 'sys/inotify.h' dice' Questo file fa parte della libreria GNU C' nella parte superiore del file, e il mio gestore di pacchetti dice che è stato installato da 'glibc'. Cosa dice il tuo? –

+2

@ Frédéric: GNU C Library! = Libreria standard. Libreria standard == 'ISO/IEC 9899: 1990' o' ISO/IEC 9899: 1999'. –

Problemi correlati