Уведомляет ли группы IN_MOVED_FROM и IN_MOVED_TO?

Я использую один дескриптор файла inotify для отслеживания множества занятых каталогов на наличие нескольких событий, включая IN_MOVED_TO и IN_MOVED_FROM.

У меня есть цикл, который вызывает на нем read (который блокируется до тех пор, пока не появятся данные для чтения) и обрабатывает события по мере их возникновения.

Когда файл перемещается между двумя отслеживаемыми каталогами, два inotify_event записываются в файловый дескриптор inotify: один с битом IN_MOVED_TO, установленным в mask, и один с IN_MOVED_FROM, оба с одним и тем же cookie.

Гарантируется ли, что оба события будут буферизованы одним и тем же вызовом read, или мне нужно будет вызвать его один раз, чтобы буферизовать одно событие, и еще раз, чтобы буферизовать следующее?


person Jordan    schedule 25.04.2013    source источник
comment
Кажется, что такой гарантии быть не может: что, если ваш буфер чтения недостаточно велик, чтобы вместить оба события?   -  person Celada    schedule 26.04.2013


Ответы (1)


Насколько я знаю, такой гарантии нет.
Мы можем полагаться только на тот факт, что два события (IN_MOVED_FROM, IN_MOVED_TO) в операции переименования связаны с одним и тем же cookie.

Любое предположение, кроме приведенного выше, ненадежно, например:

  • Два события будут происходить последовательно (одно происходит сразу после другого).
  • Два события появятся вместе в одном и том же системном вызове read.
person zeekvfu    schedule 05.12.2013