inotify C头

inotify C头,c,linux,header,inotify,C,Linux,Header,Inotify,所以我正试图编写一个使用inotify的C程序。我以前使用过pyinotify,所以我知道它是如何工作的。然而,我遵循一些指南,它告诉我包括。问题是这个头只有宏定义,没有函数原型。看起来函数是在中原型化的 我的问题是linux/inotify.h和sys/inotify.h之间有什么区别?为什么两者都有?sys/inotify.h是系统的一部分。它公开了程序将用于接收文件系统更改通知的结构和函数。可以将其视为通知系统的公共API linux/inotify.h是linux内核的一部分。它定义了用

所以我正试图编写一个使用inotify的C程序。我以前使用过pyinotify,所以我知道它是如何工作的。然而,我遵循一些指南,它告诉我包括
。问题是这个头只有宏定义,没有函数原型。看起来函数是在
中原型化的


我的问题是
linux/inotify.h
sys/inotify.h
之间有什么区别?为什么两者都有?

sys/inotify.h
是系统的一部分。它公开了程序将用于接收文件系统更改通知的结构和函数。可以将其视为通知系统的公共API


linux/inotify.h
是linux内核的一部分。它定义了用于实现通知系统本身的内核结构和常量。除非您正在编写内核模块之类的东西,否则不应该包含该文件,因为它是特定于Linux的,因此不可移植。

sys/inotify.h不是标准库的一部分!(然而,它是linux机器上通常可用的库的一部分)@Frédéric:GNU C Library!=标准图书馆。标准库==
ISO/IEC 9899:1990
ISO/IEC 9899:1999
。当然可以,但并非所有glibc都属于该标准。这就是其中之一。@Frédéric Hamidi:Glibc包含大量GNU和POSIX特定的内容——即“sys/”文件夹中用于标题的内容、“unistd.h”以及用于套接字的内容。。。标准库只有
assert.h
ctype.h
errno.h
float.h
iso646.h
limits.h
locale.h
math
setjmp.h
signal.h
stdarg.h
stdarg.h
string.h
time.h
。(C99中添加了一些东西,但我没有这个列表……)以响应GNU!=POSIX,BSD没有
inotify
,因为该功能位于
kqueue
中。为了便于携带,请尝试