![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| malor |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 632 Регистрация: 17.11.2006 Репутация: нет Всего: нет |
Допустим мне нужно много раз в секунду считывать содержимое txt-файла. В нем записан один байт. В зависимости от его значения будут предприниматься какие-то действия программой.
Файл создается, пишется, удаляется другой программой. Алгоритм: 1) Проверить существует ли сам файл. 2) Проверить изменился ли он путем сравнения с запомненным в переменной prevTime значением времени. 3) Если изменился, то произвести открытие файла функцией CreateFile(), а затем считывание функцией ReadFile(). Какие функции и структуры использовать на 1-м и 2-м шагах? Желательно без статического подключения каких-либо lib. 3-й шаг не вызывает нареканий? MSVS 2008 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
1-2) FindFirstFile
Вызывает нарекание сам факт обмена через текстовый файл, да еще и длиной 1 байт... -------------------- ... |
|||
|
||||
| bass |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 5.8.2007 Репутация: 2 Всего: 2 |
1) Проверить существует ли сам файл.
Так Начнем с нуля........ Впринцепи наличие файла можно проверить с помощью FindFirstFile и тому подобные...... Но если мы знаем путь , почему не воспользоваться CreateFile , с флагом открыть существующий. Вернет -1 (INVALID_HANDLE_VALUE).файла нет либо занят другой программой..... 2)файл открылся.... Как нам проверить изменился он или нет*??? Надо наверно считать... Read file и сравниваем с переменной.... Поставь в цикл и проверяй.... Не забудь слиип поставит а то 100% загрузки проца.... По поводу второго пункта еще есть функции контроля файла на изменение но щас на память не скажу, посоветую гугл.... |
|||
|
||||
| bass |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 5.8.2007 Репутация: 2 Всего: 2 |
Да да сам обмен через файл точно вызывает нарекания..... Может внутрений сокет или пайп почтовый ящик или просто память...???? FindFirstFile а это как второму пункту????? Если нужно проверить изменения в нутри.... Это сообщение отредактировал(а) bass - 2.8.2011, 15:47 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
FIndFirstFile, т.к. одновременно можно проверить и существование и время - см. функцию и ее параметры.
-------------------- ... |
|||
|
||||
| asmdzen |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 28.11.2010 Репутация: 1 Всего: 5 |
разве то что файл может быть открыт в то время когда та самая программа захочет его удалить не критично? можно как-то открыть файл чтоб другие процессы могли его свободно удалить, а мы при попытке чтения получали бы ошибку? |
|||
|
||||
| bass |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 5.8.2007 Репутация: 2 Всего: 2 |
Просто у тебя какае то Особенная задача...... Я бы выкрчивался так если время не критично выполнению, морозилбы другой процес На время чтения....... Если тот процесс написан не нами а выполнят функцию логирования и т.д.
Если время критично перехватом функций WriteFile DeleteFile Crete file...... Правдо это для новичка сложновато... А когда файл открыт функцией cretefile ты не удалишь его...... И может ситуация быть что наш процес не успеет считать данные.... При первом варианте...... Скорость обновления файла.... |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |