2010-12-12 42 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