2010-12-12 4 views
6

Так что я пытаюсь написать программу на C, которая использует inotify. Раньше я использовал pyinotify, чтобы понять, как это работает. Тем не менее, я следую примеру гида, и он говорит мне включить <linux/inotify.h>. Проблема в том, что этот заголовок содержит только макроопределения, а не прототипы funciton. Похоже, что функции прототипированы в <sys/inotify.h>.inotify заголовки C

Мой вопрос в чем разница между linux/inotify.h и sys/inotify.h? Почему они оба?

ответ

7

sys/inotify.h является частью GNU C library. Он предоставляет структуры и функции, которые ваша программа будет использовать для получения уведомлений об изменении файловой системы. Его можно рассматривать как открытый API системы уведомлений.

linux/inotify.h является частью ядра Linux. Он определяет структуры ядра и константы, используемые для реализации самой системы уведомлений. Вы не должны включать этот файл, если вы не пишете что-то вроде модуля ядра, потому что он специфичен для Linux и, следовательно, не переносится.

+0

sys/inotify.h не входит в стандартную библиотеку! (Это, однако, часть библиотек, обычно доступных в окне linux) –

+0

@Billy, мой 'sys/inotify.h' говорит' Этот файл является частью библиотеки GNU C' в верхней части файла, и мой менеджер пакетов говорит, что он установлен 'glibc'. Что вы говорите? –

+2

@ Frédéric: Библиотека GNU C = стандартная библиотека. Стандартная библиотека == 'ISO/IEC 9899: 1990' или' ISO/IEC 9899: 1999'. –