Добавлены проверки
This commit is contained in:
parent
d14c1d37ba
commit
582ae5a294
4 changed files with 19 additions and 10 deletions
18
source/app.d
18
source/app.d
|
@ -5,24 +5,31 @@
|
|||
// Импорты: fanotify_wrapper - обёртка, std.stdio для вывода, std.file для readLink (хотя здесь не используется из-за режима),
|
||||
// std.format для форматирования строк, core.sys.posix для констант.
|
||||
|
||||
import fanotify_wrapper; // Импорт обёртки для fanotify.
|
||||
import dfanotify; // Импорт обёртки для fanotify.
|
||||
|
||||
import std.stdio; // Импорт для writeln, writefln (вывод в консоль).
|
||||
import std.file : readLink; // Импорт readLink для чтения симлинков (не используется здесь, но оставлено для возможного расширения).
|
||||
import std.format : format; // Импорт format для форматирования строк (хотя здесь используется writefln напрямую).
|
||||
import core.sys.posix.fcntl : AT_FDCWD; // Импорт AT_FDCWD для текущей директории.
|
||||
import core.sys.posix.unistd : close; // Импорт close (не используется здесь, но для возможного расширения с fd).
|
||||
import core.stdc.stdlib : exit;
|
||||
|
||||
// Функция main: точка входа приложения.
|
||||
void main()
|
||||
{
|
||||
Fanotify fan;
|
||||
// Инициализация объекта Fanotify с флагами:
|
||||
// FAN_CLASS_NOTIF - режим уведомлений (без контроля доступа),
|
||||
// FAN_CLOEXEC - закрытие дескриптора при exec,
|
||||
// FAN_REPORT_FID | FAN_REPORT_DIR_FID | FAN_REPORT_NAME - отчёт с FID (идентификатор файла) вместо fd, плюс имя файла.
|
||||
// Это позволяет получать имя без реального fd (fd будет FAN_NOFD).
|
||||
auto fan = new Fanotify(
|
||||
try {
|
||||
fan = new Fanotify(
|
||||
FAN_CLASS_NOTIF | FAN_CLOEXEC | FAN_REPORT_FID | FAN_REPORT_DIR_FID | FAN_REPORT_NAME);
|
||||
} catch (Exception e) {
|
||||
writeln(e.msg);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// Определение маски событий: битовая OR флагов для мониторинга.
|
||||
// FAN_OPEN - открытие, FAN_MODIFY - модификация, FAN_CLOSE - закрытие (включает WRITE и NOWRITE),
|
||||
|
@ -32,7 +39,12 @@ void main()
|
|||
// Маркировка директории /tmp/scripts:
|
||||
// FAN_MARK_ADD - добавить марку, FAN_MARK_ONLYDIR - только для директории (ошибка, если не директория).
|
||||
// AT_FDCWD - базовая директория текущая, путь "/tmp/scripts".
|
||||
fan.mark(FAN_MARK_ADD | FAN_MARK_ONLYDIR, eventMask, AT_FDCWD, "/tmp/scripts");
|
||||
try {
|
||||
fan.mark(FAN_MARK_ADD | FAN_MARK_ONLYDIR, eventMask, AT_FDCWD, "/tmp/scripts");
|
||||
} catch (Exception e) {
|
||||
writeln(e.msg);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
writeln("Мониторинг запущен для /tmp/scripts..."); // Вывод сообщения о старте мониторинга.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue