2010-12-12 8 views
6

Więc próbuję napisać program w języku C, który używa inotify. Używałem wcześniej pseudotłuszcza, więc rozumiem, jak to działa. Jednak podążam za jakimś przewodnikiem i mówi mi, aby dołączyć <linux/inotify.h>. Problem polega na tym, że ten nagłówek ma tylko definicje makr, a nie prototypy funcitonu. Wygląda na to, że funkcje są prototypowane w <sys/inotify.h>.inotify C headers

Moje pytanie brzmi: jaka jest różnica między linux/inotify.h a sys/inotify.h? Dlaczego są oba?

Odpowiedz

7

sys/inotify.h jest częścią GNU C library. Odsłania struktury i funkcje, które będą używane przez twój program, aby otrzymywać powiadomienia o zmianach systemu plików. Można go uznać za publiczny interfejs API systemu powiadomień.

linux/inotify.h jest częścią jądra systemu Linux. Definiuje struktury jądra i stałe używane do implementacji samego systemu powiadomień. Nie powinieneś włączać tego pliku, chyba że piszesz coś takiego jak moduł jądra, ponieważ jest on specyficzny dla Linuksa i dlatego nie jest przenośny.

+0

sys/inotify.h nie jest częścią standardowej biblioteki! (Jest to jednak część bibliotek zwykle dostępnych w pudełku linuxowym) –

+0

@Billy, moje 'sys/inotify.h' mówi:" Ten plik jest częścią biblioteki GNU C "na górze pliku, a mój menadżer pakietów mówi, że jest zainstalowany przez 'glibc'. Co mówią twoi? –

+2

@ Frédéric: GNU C Library! = Standard Library. Biblioteka standardowa == 'ISO/IEC 9899: 1990' lub' ISO/IEC 9899: 1999'. –

Powiązane problemy