Вы могли изучить дополнение Теледактиля для Thunderbird из 5digits.org. Они производят Пятипалое дополнение для Firefox, который работает приятно на средства управления, хотя текстовые поля по общему признанию un-vim-ish.
В списке функций говорится, что он поддерживает внешних редакторов, таким образом, gvim мог быть в Вашем будущем.
То, что я ищу, является некоторым способом получить уведомление об изменениях на файле [в proc]
Вы не можете, потому что они не файлы. Это - не совсем дублирующийся вопрос, но ответ здесь объясняет почему.
/proc
интерфейс ядра. Нет никаких реальных файлов там, следовательно они не могут измениться. Чтение из дескрипторов является запросом и данными в файле, когда Вы читаете, это - ответ на это.
Единственным путем Вы могли моделировать что-то вроде этого, должен будет считать файл с промежутками и сравнить содержание, чтобы видеть, изменился ли ответ от ядра - похож, Вы уже сделали это.
Если Вы stat
файлы procfs, atime и mtime будут тем же: для некоторых файлов это - каждый раз, когда вызов статистики был для других время от во время начальной загрузки системы. В первом случае это, будет всегда казаться, изменилось во втором, это, никогда будет казаться, не изменилось.
Также имейте в виду, что некоторые файлы под /proc/
позволяют отслеживать изменения с помощью опроса, например, если вы делаете man proc
, вы можете прочитать следующее о файле /proc/self/mounts
:
/proc/[pid]/mounts (начиная с Linux 2.4.19) В этом файле перечислены все файловые системы, смонтированные в настоящее время в пространстве имен монтирования процесса (см. mount_namespaces(7)). Тем формат этого файла задокументирован в fstab(5).
Начиная с версии ядра 2.6.15, этот файл является опрашиваемым: после открытия файла для чтения, изменение в этом файле (т.е. Монтирование или размонтирование файловой системы) приводит к тому, что select(2) помечает дескриптор файла как имеющий исключительное состояние, а poll(2) и epoll_wait(2) пометить файл как имеющий приоритетное событие (POLLPRI). (До Linux 2.6.30 изменение в этом файле было указывается дескриптором файла, помеченным как читаемый для select(2) и помеченным как имеющий условие ошибки для poll(2) и epoll_wait(2).)
И это именно то, что реализуется в следующем вопросе:
https://stackoverflow.com/questions/5070801/monitoring-mount-point-changes-via-proc-mounts
У меня был похожий случай использования -, и я обнаружил, что успешно отслеживаю каталог, а не сам «файл».
Попробуйте
inotifywait -r -m /proc/asound/card0/
и вы должны увидеть события вроде:
/proc/asound/card0/ OPEN codec#0
/proc/asound/card0/ ACCESS codec#0
/proc/asound/card0/ CLOSE_NOWRITE,CLOSE codec#0
Простой grep
против codec#0
и немного awk
сообщит вам, была ли запись в файл.
fork()
и материал как этот является дорогим; утилиты, записанные, все в C, как упомянуто, имели бы более быстрые методы. Я все еще не думаю, что Вы добавляете много загрузки в систему полный tho. – goldilocks 14.09.2013, 16:53