помочь с сценарием inotify C - PullRequest
2 голосов
/ 14 июля 2011

Источник

Я никогда не использовал C раньше. этот сценарий добавляет прослушиватель в каталог и уведомляет пользователя, передавая эхо-запрос на терминал и затем завершая работу всякий раз, когда происходит событие файла. Я хочу изменить сценарий, чтобы НЕ выходить, а вместо этого продолжать мониторинг папки. Я думаю, что ключом может быть эта строка:

length = read( fd, buffer, BUF_LEN );

но я не очень понимаю, что здесь происходит. Описание функции read(), вероятно, полезно для тех, кто действительно хорошо знает C:

Using inotify is simple: Create a file descriptor, attach one or more watches (a watch is a path and set of events), and use the read() method to receive event information from the descriptor. Rather than burn scarce cycles, read() blocks until events occur.

но я не подпадаю под эту категорию.

1 Ответ

4 голосов
/ 14 июля 2011

Программа существует просто потому, что ничто не мешает ей добраться до exit( 0 ); после того, как она получила событие.Вы можете обернуть все от fd = inotify_init(); до ( void ) close( fd ); в цикле, и он будет начинаться столько раз, сколько вы хотите.

Проблема не в length = read( fd, buffer, BUF_LEN );.Эта часть просто ожидает события, и она не требует выхода из программы.Действительно, main предназначен для выполнения за один проход и выхода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...