2013-02-19 28 views
11

Tôi đang làm việc với linux và tôi có một thư mục có thư mục con và có các tệp bên trong các thư mục con. Tôi phải theo dõi những thay đổi trong tập tin. Trong C++ tôi đang sử dụng boost. Tôi đi qua tất cả các thư mục sau mỗi 30 giây và kiểm tra last_write_time. Về cơ bản, nó hoạt động. Nhưng mỗi lần hành động này được thực hiện, CPU của tôi đi hạt và tôi thấy 15% -25% CPU sử dụng chỉ dành cho chương trình này ở trên cùng. Tôi đã đọc về sự bất công. Nếu tôi sử dụng inotify tôi sẽ có nhiều hơn hoặc ít hơn cùng một CPU sử dụng hoặc nó sẽ được cải thiện? Có bất kỳ lựa chọn thay thế tốt cho những gì tôi đang làm?giám sát thay đổi tập tin c + + linux

+6

Hiệu suất sẽ được cải thiện rất nhiều, vì bạn sẽ không phải trải qua tất cả các tệp và thư mục con. Thay vào đó, bạn sẽ nhận được thông báo khi một tệp hoặc thư mục đã thay đổi. Inotify có lẽ là cách tốt nhất để đi trên Linux. –

+0

Cảm ơn bạn đã nhập Joachim. Tôi sẽ thử điều đó. – user1566277

Trả lời

13

Khi bạn sử dụng inotify, bạn không cần phải thăm dò ý kiến ​​cho tất cả các tệp để kiểm tra xem có thay đổi hay không. Bạn nhận được một hệ thống gọi lại thông báo cho bạn khi một tập tin hoặc thư mục đã xem bị thay đổi.

Hệ thống tệp/hạt nhân đã có thông tin này, do đó việc sử dụng tài nguyên/CPU không chỉ được chuyển sang ứng dụng khác, nó thực sự bị giảm.

Monitor file system activity with inotify cung cấp thêm chi tiết lý do sử dụng inotify, hiển thị mức sử dụng cơ bản và giúp bạn thiết lập.

+0

Rất cám ơn câu trả lời của bạn. Tôi sẽ thử. – user1566277

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