Подтвердить что ты не робот

Разница между inotify и epoll

Я хотел бы знать, какая разница между обоими наблюдателями i/o inotify и epoll?

Inotify

  • inotify_init (void) создает экземпляр inotify для чтения событий из
  • inotify_add_watch (int fd, const char * path, int mask) возвращает часы fd вокруг файла node по пути
  • inotify_rm_watch (int fd, int wd) останавливает просмотр событий на fd

Epoll

  • epoll_create (void) создает объект epoll
  • epoll_ctl (int epfd, int op, int fd, struct epoll_event * event) устанавливает события для просмотра
  • epoll_wait (int epfd, struct epoll_event * events, int maxevents, int timeout); блоки до события

Так что, похоже, существует другой подход к просмотру файлов. Inotify пытается позволить пользователю решить, когда собирать события, пока блоки epoll до тех пор, пока что-то не произойдет.

Это правильно? Каковы другие отличия?

Бодо

4b9b3361

Ответ 1

Самое большое различие заключается в том, что epoll можно использовать для ЛЮБОГО fd. Это означает, что это хорошо для просмотра всех способов передачи данных. Сокеты, IPC, файлы, принтеры.. что угодно. inotify предназначен только для файловых систем.

Однако, поскольку inotify специфичен для файловых систем, вы можете получать уведомления в широком наборе атрибутов, специфичных для файловой системы, таких как атрибуты файлов и считываемый файл. Эти вещи невозможны через epoll.

Фактически, inotify возвращает файловый дескриптор, что означает, что вы можете использовать epoll для определения того, какой inotify FD вы должны использовать для чтения. Таким образом, двое идут рука об руку в некоторой степени.

http://en.wikipedia.org/wiki/Inotify