c linux epoll inotify

Diferencia entre inotify y epoll.



linux (1)

La mayor diferencia es que epoll puede usarse para CUALQUIER fd. Esto significa que es bueno para ver todo tipo de formas de comunicar datos. Sockets, IPC, archivos, impresoras .. cualquier cosa. inotify es solo para sistemas de archivos.

Sin embargo, dado que inotify es específico de los sistemas de archivos, puede recibir notificaciones sobre una amplia gama de atributos específicos del sistema de archivos, como los atributos de los archivos y el archivo que se está leyendo. Estas cosas no son posibles a través de epoll.

De hecho, inotify devuelve un descriptor de archivo, lo que significa que puede usar epoll para determinar a qué FD de inotificación debe llamar leer. Así que los dos van de la mano hasta cierto punto.

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

Me gustaría saber cuál es la diferencia entre los observadores de E / S inotify y epoll ?

inotificar

  • inotify_init (void) crea una instancia de inotify para leer eventos de
  • inotify_add_watch (int fd, const char * path, int mask) devuelve un reloj fd alrededor del nodo del archivo detrás de la ruta
  • inotify_rm_watch (int fd, int wd) deja de ver eventos en fd

epoll

  • epoll_create (void) crea un objeto epoll
  • epoll_ctl (int epfd, int op, int fd, struct epoll_event * event) configura eventos para ver
  • epoll_wait (int epfd, struct epoll_event * events, int maxevents, int timeout); bloques hasta que suceda el evento

Así que parece que hay un enfoque diferente en la visualización de archivos. Inotify intenta permitir que el usuario decida cuándo recopilar eventos mientras que los bloques epoll hasta que suceda algo.

¿Es esto correcto? ¿Cuáles son otras diferencias?

Bodo