#linux #sys
#linux #sys
Вопрос:
Inotify не запускается при изменениях файла в /sys
— какие существуют способы подписаться на изменения там?
Ответ №1:
События, которые изменяют /sys, обычно обрабатываются udev. Итак, вы можете добавить правила udevd для обработки событий или использовать libudev для доступа к системным файлам и мониторинга за ними. Я только что нашел здесь несколько руководств:http://www.signal11.us/oss/udev /
Ответ №2:
Используйте udev и правила udev, чтобы получать уведомления об изменениях (подключение оборудования к сети, загрузка драйверов, загрузка прошивки и т.д.), Которые отражены в /sys.
Смотрите http://hackaday.com/2009/09/18/how-to-write-udev-rules / для получения подробной информации
Ответ №3:
Чтобы получать уведомления об изменениях в файле или каталоге / sys, я использую объекты опроса из python.
import select
poll_objet = select.poll()
fd_object = file("/sys/what_you_want_to_survey", "r")
poll_objet.register(fd_object) # I use the select.POLLPRI | select.POLLERR combination in my code ;)
result = poll_object.poll()
где результатом является список (fd, событие), к которым были применены прикосновения.
Комментарии:
1. Почему вы назвали свой объект опроса «poll_objet» без «c»?
2. Я использовал оболочку Python и ввел код вручную. В качестве файла я использовал «/home/ikem /operstate». Я использовал обычную оболочку Bash, чтобы изменить значение на
echo "0">operstate
иecho "1">operstate
. В оболочке Python я напечатал значение «результат». Я написал цикл while, чтобы обновлять и печатать результат при каждом запуске, и каждый раз получал одну и ту же пару значений «[3][5]». Чего я здесь не понимаю?