2010-12-12 100 views
6

所以我试图编写一个使用inotify的C程序。我之前使用pyinotify,所以我明白它是如何工作的。但是,我遵循一些指南,它告诉我包括<linux/inotify.h>。问题是这个头只有宏定义,而不是功能原型。它看起来像在<sys/inotify.h>原型的功能。inotify C头文件

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

回答

7

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

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

+0

sys/inotify.h不是标准库的一部分! (但是,它的一部分库通常在Linux机器上可用) – 2010-12-12 08:07:35

+0

@Billy,我的'sys/inotify.h'表示'该文件是GNU C库的一部分',位于文件的顶部,并且我的软件包管理器说它是由'glibc'安装的。你的意见是什么? – 2010-12-12 08:17:08

+2

@Frédéric:GNU C Library!=标准库。标准库==“ISO/IEC 9899:1990”或“ISO/IEC 9899:1999”。 – 2010-12-12 08:18:47