John đã đề cập đến hai tuyến đường chính bạn có thể thực hiện để xem tệp trong hệ thống Unix/Linux: thông báo và bỏ phiếu.
Thông báo là khi bản thân hệ thống (thường là hạt nhân) kích hoạt thông báo cho các ứng dụng đã đăng ký bất cứ khi nào tệp được truy cập hoặc ghi vào. Cách tiếp cận này đòi hỏi một hệ thống tuân thủ và có thể không có sẵn trên các máy cũ hơn.
Việc triển khai chính thông báo dưới Linux là inotify, được xây dựng thành hạt nhân 2.6.13 trở lên và có thể được vá thành 2.6.12 trở về trước. Có một số nice IBM guide khi sử dụng inotify cũng như số set of tools and C library cơ bản để truy cập vào thông báo.
Thăm dò ý kiến là khi chương trình của bạn liên tục kiểm tra tệp trong các khoảng thời gian để xem liệu có bất kỳ điều gì về tệp đó không - kích thước, thời gian sửa đổi cuối cùng, chủ sở hữu, v.v.
Không có tiêu chuẩn thực hiện điều này, vì nó được viết trên cơ sở cấp chương trình chứ không phải hệ thống, mặc dù hệ thống gọi poll tồn tại và dường như làm điều gì đó hữu ích cho mục đích này (trang người đàn ông nói nó tương tự như select và nó chờ một sự kiện có sẵn trên bộ mô tả tệp). Bạn cũng có thể sử dụng cách tiếp cận cơ bản hơn với stat và tự mình thực hiện kiểm tra.
cảm ơn lời giải thích –
Tôi nghi ngờ rằng cuộc thăm dò ý kiến () sẽ giúp ích. Có vẻ như bạn đã hiểu nhầm cuộc thăm dò ý kiến () nào. Trừ khi bạn có ý định sử dụng nó * với * inotify. – Thomas
Để làm rõ: poll() chỉ có thể cho bạn biết nội dung như "nếu tôi đọc() từ tệp này ngay bây giờ, liệu nó có chặn không?" hoặc "Đợi tối đa 3 giây hoặc cho đến khi tôi có thể đọc (mà không cần đọc() chặn) từ ít nhất một trong các bộ mô tả tệp". – Thomas