2010-12-12 3 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カーネルの一部です。これは、通知システム自体を実装するために使用されるカーネル構造と定数を定義します。カーネルモジュールのようなものを書くのでない限り、そのファイルはインクルードするべきではありません。

+0

sys/inotify.hは標準ライブラリに含まれていません!私の 'SYS/inotify.h'このファイルには、ファイルの先頭で右library' GNU Cの一部であり、'言い、 –

+0

@Billy(ただし、Linuxボックスで、通常使用可能なライブラリの一部です)私のパッケージマネージャーは 'glibc'によってインストールされていると言っています。あなたの言うことは何ですか? –

+2

@フレデリック:GNU Cライブラリ!=標準ライブラリ。標準ライブラリ== '' ISO/IEC 9899:1990'または '' ISO/IEC 9899:1999'。 –