2010-12-12 1 views
6

그래서 inotify를 사용하는 C 프로그램을 작성하려고합니다. 전에 pyinotify를 사용 했으므로 어떻게 작동하는지 이해합니다. 그러나, 나는 약간의 가이드를 따라 가고있다. 그리고 그것은 나에게 <linux/inotify.h>를 포함하도록 말한다. 문제는이 헤더에는 funciton 프로토 타입이 아닌 매크로 정의 만 있다는 것입니다. 함수가 <sys/inotify.h>에서 프로토 타입 화 된 것 같습니다.inotify C 헤더

제 질문은 linux/inotify.hsys/inotify.h의 차이점은 무엇입니까? 왜 둘 다 있습니까?

답변

7

sys/inotify.hGNU C library의 일부입니다. 파일 시스템 변경 알림을 받기 위해 프로그램이 사용할 구조와 함수를 노출합니다. 통지 시스템의 공용 API로 간주 될 수 있습니다.

linux/inotify.h은 Linux 커널의 일부입니다. 알림 시스템 자체를 구현하는 데 사용되는 커널 구조 및 상수를 정의합니다. 커널 모듈과 같은 것을 작성하지 않는 한, 그 파일을 포함해서는 안된다. 왜냐하면 리눅스 모듈은 이식성이 없기 때문이다.

+0

sys/inotify.h는 표준 라이브러리에 포함되어 있지 않습니다! (그러나 리눅스에서 일반적으로 사용할 수있는 라이브러리의 일부이다.) –

+0

@Billy, 내'sys/inotify.h '는'이 파일은 파일의 맨 위에있는 GNU C 라이브러리의 일부이다'라고 말하고 제 패키지 매니저는'glibc '에 의해 설치되었다고합니다. 네가 뭐래? –

+2

@ Frédéric : GNU C Library! = 표준 라이브러리. 표준 라이브러리 ==''ISO/IEC 9899 : 1990' 또는''ISO/IEC 9899 : 1999'. –