inotify C头
所以我正试图编写一个使用inotify的C程序。我以前使用过pyinotify,所以我知道它是如何工作的。然而,我遵循一些指南,它告诉我包括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内核的一部分。它定义了用
。问题是这个头只有宏定义,没有函数原型。看起来函数是在
中原型化的
我的问题是
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
中。为了便于携带,请尝试