linux, inotify - как подписаться? - PullRequest
5 голосов
/ 01 ноября 2010

Не могли бы вы объяснить мне механизм inotify? Я искал в Интернете об этом, но я понял, что если я хочу увидеть изменения в файле, я должен выполнить опрос с помощью функции «чтение». Есть ли какая-либо функция обратного вызова, которая будет уведомлять меня, если в файле есть изменения без опроса?

Спасибо

Ответы [ 4 ]

2 голосов
/ 01 ноября 2010

Я предполагаю, что вы используете некоторую библиотеку GUI, которая обрабатывает события для вас.

В лучших библиотеках GUI есть способ просмотра файловых дескрипторов.В GTK это gtk_input_add_full ;в Qt QSocketNotifier может работать для вас.

1 голос
/ 20 апреля 2011

Вы можете использовать часть ev_io библиотеки libev. Это позволит вам установить обратный вызов, когда inotify fd доступен для чтения.

Документацию для libev можно найти здесь: http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod

1 голос
/ 01 ноября 2010

В вызовах inotify используются файловые дескрипторы.Вместо опроса вы можете использовать возвращенные FD из семейства вызовов select () .Это не совсем функция обратного вызова, но она снижает накладные расходы, которые вас интересуют.

0 голосов
/ 01 ноября 2010

Нет, inotify требует опроса.

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

...