Я работаю над небольшим проектом в C на Linux, и у меня возникла проблема. Я должен сделать программу, которая имитирует активность WatchDog. Поэтому я написал почти весь код, но я не знаю, как сделать самую важную роль. Пока мое приложение работает в фоновом режиме, оно должно обнаруживать, когда к ним подключены определенные файлы. Я сохранил в некоторых структурах inode, путь и имя этих файлов. Итак, имея эту информацию о файлах, как я могу определить, когда процесс (любой процесс, а не определенный) пытается получить доступ к одному из файлов? Редактировать: На самом деле, я должен обнаружить следующие события: когда файл был открыт и кто-то пытается изменить файл. Например, если пользователь что-то пишет в файл, а затем пытается сохранить изменения, я должен разрешить ему или нет делать это.Как определить, когда определенный файл был открыт?
ответ
Вы ищете наблюдателя файловой системы. Для этого вы можете использовать Inotify: http://en.m.wikipedia.org/wiki/Inotify
Из того, что я читал, он должен это сделать. Я попробую, и я буду держать вас в курсе. Спасибо! [не может отменить ответ, потому что я только что подписался, и у меня нет необходимой репутации] –
К сожалению, для искателя нужны функциональные возможности, которые inotify не может предоставить. –
«если пользователь что-то пишет в файл, а затем пытается сохранить изменения, я должен разрешить ему или не делать этого». Это потребует от вас перехвата системных вызовов, которые открывают файлы и записывают их. Inotify не делает этого действительно. – Tarik
- 1. Как определить, был ли файл открыт для добавления в Windows?
- 2. Как определить, когда открыт fancybox?
- 3. Как определить, был ли первый фрагмент открыт?
- 4. Определить, открыт ли файл
- 5. Как определить, когда файл не был изменен?
- 6. Как определить, когда был создан файл
- 7. Можно ли определить, был ли пользователь открыт или загружен файл?
- 8. AppleScript: «файл уже открыт», но «файл не был открыт»
- 9. Как узнать, сколько раз определенный URL был открыт в Google+?
- 10. Как определить, открыт ли какой-либо файл в Windows?
- 11. Как определить, когда сокет открыт на клиенте?
- 12. Как определить, был ли файл закрыт
- 13. Проверьте, был ли файл уже открыт
- 14. Запустить файл, когда открыт файл .tar.gz.
- 15. Как определить, когда был создан git ref?
- 16. как определить, какой элемент из уведомления UILocal был открыт
- 17. iOS - обнаружен SKStoreProductViewController был открыт
- 18. Файл PHPExcel небезопасен, когда открыт
- 19. Определить определенный заголовочный файл/C++
- 20. Как проверить, был ли файл открыт для записи на Perl?
- 21. Окно/вкладка повторного использования, когда файл уже открыт
- 22. Как определить, какой файл .emacs был загружен?
- 23. Открытое событие файла Cocoa - обнаружение, если файл был открыт
- 24. Node.js: Детектирование файл, который был открыт с fs.createWriteStream(), становится удален
- 25. Detect всякий раз, когда определенный тип файла получает открыт
- 26. Как определить, когда телефон был установлен
- 27. Как определить, когда iAd был уволен?
- 28. Как определить, когда DOM был изменен?
- 29. PYTHON Как определить, когда был завершен процесс
- 30. Как определить, когда UIView был нарисован над
Почему бы просто не удалить права на запись из файла? –
Никогда не делал этого, но я считаю, что вы должны сделать системный вызов, чтобы получить все процессы, затем получить список дескрипторов для каждого процесса, а затем получить имя файла для этих дескрипторов. – Tarik
Вам нужно предотвратить запись, или вам нужно ее пассивно обнаружить? – Barmar