Как ядро ​​Linux знает, какой inotify_handle имеет определенные часы - PullRequest
0 голосов
/ 25 октября 2011

Я понял, что ядро ​​linux предоставляет "механизм inotify" для мониторинга файловой системы.

Согласно inotify, inotify_init() возвращает fd для получения inotify_event от ядра.(Я понял, ядро ​​напишет inotify_event на нем.)

1) И если я добавлю новые часы с inotify fd, используя inotify_add_watch(), кто напишет inotify_event на inotify fd при просмотре файлаполучил событие.

2) (если ядро ​​это делает), когда ядро ​​обнаруживает событие для просматриваемого файла, как ядро ​​решает, какой inotify fd(inotify_instance) должен обновить с помощью этого inotify_event?

1 Ответ

2 голосов
/ 08 декабря 2011

Мое собственное исследование, это ответ:

  1. Это ядро ​​Linux; в частности, файловая система.
  2. Когда вы вызываете inotify_add_watch() для определенного файла, inotify сохраняет некоторую информацию inotify watch в структуре inode этого файла.

Затем, когда файловая система имеет дело с этим файлом, она проверяет структуру файла inode - существует ли inotify watches или нет. Если inotify часы найдены из структуры inode, inotify сообщает inotify_event.

...