inotify和epoll的区别

Difference between inotify and epoll

本文关键字:区别 epoll inotify      更新时间:2023-10-16

我想知道I/o观察者inotifyepoll之间的区别是什么?

inotify

  • inotify_init(void) 创建inotify实例从
  • 读取事件
  • inotify_add_watch(int fd, const char * path, int mask) 返回路径
  • 后面的文件节点周围的watch fd
  • 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阻塞,直到有事情发生。

正确吗?还有什么不同?

最大的区别是epoll可以用于任何fd。这意味着它可以很好地观察所有类型的数据通信方式。套接字,IPC,文件,打印机…任何东西。Inotify仅用于文件系统。

但是,由于inotify是特定于文件系统的,因此您可以收到关于大量特定于文件系统的属性的通知,例如文件属性和正在读取的文件。这些是不可能通过epoll实现的。

实际上,inotify返回一个文件描述符——这意味着你可以使用epoll来决定你应该调用哪个inotify FD的read。所以这两者在某种程度上是相辅相成的。

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