2010-12-12 35 views
6

Vì vậy, tôi đang cố gắng viết một chương trình C sử dụng inotify. Tôi đã sử dụng pyinotify trước vì vậy tôi hiểu nó hoạt động như thế nào. Tuy nhiên, tôi đang làm theo một số hướng dẫn và nó cho tôi biết bao gồm <linux/inotify.h>. Vấn đề là tiêu đề này chỉ có các định nghĩa macro, không phải các nguyên mẫu funciton. Có vẻ như các chức năng được tạo mẫu trong <sys/inotify.h>.inotify C tiêu đề

Câu hỏi của tôi là sự khác biệt giữa linux/inotify.hsys/inotify.h là gì? Tại sao có cả hai?

Trả lời

7

sys/inotify.h là một phần của GNU C library. Nó cho thấy các cấu trúc và chức năng mà chương trình của bạn sẽ sử dụng để nhận các thông báo thay đổi hệ thống tập tin. Nó có thể được coi là API công khai của hệ thống thông báo.

linux/inotify.h là một phần của hạt nhân Linux. Nó định nghĩa cấu trúc hạt nhân và hằng số được sử dụng để thực hiện hệ thống thông báo. Bạn không nên bao gồm tập tin đó trừ khi bạn đang viết một cái gì đó giống như một mô-đun hạt nhân, bởi vì nó là Linux cụ thể và do đó không di động.

+0

sys/inotify.h không phải là một phần của thư viện chuẩn! (Đó là, tuy nhiên, một phần của các thư viện thường có sẵn trên một hộp linux) –

+0

@Billy, 'sys/inotify.h' của tôi nói' Tệp này là một phần của thư viện GNU C ngay ở đầu tệp, và quản lý gói của tôi nói rằng nó được cài đặt bởi 'glibc'. Bạn nói gì? –

+2

@ Frédéric: Thư viện GNU C! = Thư viện chuẩn. Thư viện chuẩn == 'ISO/IEC 9899: 1990' hoặc' ISO/IEC 9899: 1999'. –

Các vấn đề liên quan