Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отслеживать изменения файловых ресурсов 
:(
    Опции темы
denix
Дата 20.3.2009, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 11.1.2009

Репутация: нет
Всего: нет



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


PM MAIL   Вверх
Vaulter
Дата 20.3.2009, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 2
Всего: 22



Исходники rsync:
http://samba.anu.edu.au/ftp/rsync/

Цитата

rsync — (англ. Remote Synchronization) это программа для UNIX-подобных систем, которая выполняет синхронизацию файлов и каталогов в двух местах с минимизированием трафика, используя кодировку данных при необходимости.


Там, скорее всего, ты найдешь ответы на все свои вопросы... и не много больше  smile 


--------------------
PM MAIL WWW ICQ   Вверх
Rififi
Дата 20.3.2009, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 11
Всего: 36



denix
Никак. C++ не поддерживает такие возможности.
PM MAIL   Вверх
denix
Дата 20.3.2009, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 11.1.2009

Репутация: нет
Всего: нет



ясненько, но ведь же Windows или же проводник как то изминения отслеживает согласитесь
PM MAIL   Вверх
leneCaress
Дата 20.3.2009, 21:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 12.12.2008
Где: Москва

Репутация: нет
Всего: 1



да - в стандартных библиотеках с++ такого нету...

если вам нужно получать события от ФС (ТЕ както реагировать на изменения файлов):
- вы под линуксом - копайте в сторону inotify...
- если под виндой - в сторону FindFirstChangeNotification

если нужно что-то вроди синхронизации - лучше чем rsync ничего не видела
PM MAIL   Вверх
denix
Дата 20.3.2009, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 11.1.2009

Репутация: нет
Всего: нет



спасибо за ответы всем участникам

но мне нужна не синхронизация, а написать программу, которая отслеживает появление/изминение файлов, не знаю сна чем зацепиться
PM MAIL   Вверх
leneCaress
Дата 20.3.2009, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 12.12.2008
Где: Москва

Репутация: нет
Всего: 1



Цитата(denix @  20.3.2009,  23:06 Найти цитируемый пост)
но мне нужна не синхронизация, а написать программу, которая отслеживает появление/изминение файлов, не знаю сна чем зацепиться 


я уже писала:
Цитата(leneCaress @  20.3.2009,  21:38 Найти цитируемый пост)
если вам нужно получать события от ФС (ТЕ както реагировать на изменения файлов):
- вы под линуксом - копайте в сторону inotify...
- если под виндой - в сторону FindFirstChangeNotification


PM MAIL   Вверх
andrew_121
Дата 21.3.2009, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Это в раздел по WINAPI.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
denix
Дата 21.3.2009, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 11.1.2009

Репутация: нет
Всего: нет



а без винапи возможно написать?
может есть какие варианты?
PM MAIL   Вверх
leneCaress
Дата 21.3.2009, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 12.12.2008
Где: Москва

Репутация: нет
Всего: 1



хм... winapi это программный интерфейс самих виндов. любая программа для полноценной работе под виндой его использует.
без него - никак.

может быть у вас есть какая-то библиотека (mfc, vcl, qt....) которая работает поверх winapi и предоставляет удобный абстрагирующий интерфейс... но: если вам нужно серьезно взаимодействовать с ОС - извените - но придется работать с winapi

даже могу допустить что вам удастся найти библиотеку которая за вас будет вызывать winapi... но без него всеравно никуда smile
PM MAIL   Вверх
andrew_121
Дата 22.3.2009, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Цитата(leneCaress @  21.3.2009,  21:42 Найти цитируемый пост)
даже могу допустить что вам удастся найти библиотеку которая за вас будет вызывать winapi

Я в основном юзаю Qt. В нем есть все объекты для решения поставленной задачи.
QFileSystemWatcher


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
denix
Дата 24.3.2009, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 11.1.2009

Репутация: нет
Всего: нет



тут написано http://ru.wikipedia.org/wiki/Rsync

Код

Алгоритм

Утилита rsync использует алгоритм, разработанный австралийским программистом Эндрю Триджеллом, для эффективной передачи структур (например файлов) по коммуникационным соединениям в том случае, когда принимающий компьютер уже имеет отличающуюся версию этой структуры.

Принимающий компьютер разделяет свою копию файла на неперекрывающиеся куски фиксированного размера S, и вычисляет контрольную сумму для каждого куска: MD4 хэш и более слабый 'rolling checksum', и отправляет их серверу, с которым синхронизируется.

Сервер, с которым синхронизируются, вычисляет контрольные суммы для каждого кусочка размера S в своей версии файла, в том числе перекрывающиеся куски. Это может быть эффективно подсчитано ввиду особого свойства rolling checksum: если rolling checksum байт от n до n+S-1 равняется R, то rolling checksum байт от n+1 до n+S может быть посчитана исходя из R, байта n и байта n+S без необходимости учитывать байты, лежащие внутри этого интервала. Таким образом, если уже подсчитана rolling checksum байт 1-25, то для подсчета rolling checksum байт 2-26 используется предыдущая контрольная сумма и байты 1 и 26.


1)никак не пойму зачем и что такое rolling checksum?
2) понятно, что Принимающий компьютер разделяет свою копию файла на неперекрывающиеся куски фиксированного размера S, и вычисляет контрольную сумму для каждого куска и сервер делает тоже самое со своей копией этого файла
непонятно для чего он считает для, цитирую: "Сервер, с которым синхронизируются, вычисляет контрольные суммы для каждого кусочка размера S в своей версии файла, в том числе перекрывающиеся куски"
Для чего он это делает? если он просто может сравнивать хеши кусков файла?

PM MAIL   Вверх
Vaulter
Дата 30.3.2009, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 2
Всего: 22



denix
Цитата(denix @  24.3.2009,  14:53 Найти цитируемый пост)
тут написано http://ru.wikipedia.org/wiki/Rsync

ой, чтото мне тоже страшно стало  smile 


Цитата(denix @  20.3.2009,  21:02 Найти цитируемый пост)
чтобы программа отслеживала изменения файловых ресурсов, т.е. появление новых файлов и папок, их удаления, изминения)


для слежения за изменением чеголибо - сохрани старое состояние, через промежуток времени посмотри новое - сравни smile

как в с++ это решить я не скажу, но в bash:

Код

watch -d 'ls -la'




--------------------
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0791 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.