Пользователь fanotify может изменить файл до того, как к нему обратится приложение. Но этого не происходит через fanotify. Вы получаете доступ и изменяете фактический файл, вы не представляете другое представление для приложения.
Когда вы получаете события разрешений через fanotify, операция доступа к файлу остается заблокированной до тех пор, пока вы не ответите на интерфейс fanotify. Пока приложение заблокировано, вы можете делать все, что хотите, в том числе читать и изменять файл, к которому приложение хотело получить доступ. После того, как вы отправили ответ на событие разрешения fanotify, предполагая, что это положительный ответ, приложение получит доступ к файлу и найдет его в состоянии, которое вы, возможно, изменили.
Обратите внимание, что толькоopen
(иaccess
)запускают события разрешения, а не read
и write
. Таким образом, с fanotify вы можете перехватить открытие файла, но вы можете только контролировать последующий доступ к данным файла.
Вы можете поместить любую часть своего кода в $(...)
для захвата вывода вместо того, чтобы записывать его в стандартный вывод.
Например:
OUT="$(
for i in 1 2 3; do
echo "updated $i"
done
)"
if [[ "$OUT" == *"updated"* ]]; then
echo "$OUT"
fi
Примечание :используйте двойные квадратные -скобки [[]]
и простой оператор сравнения (, т.е.==
)