![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
iSherhan |
|
||||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 20.9.2010 Репутация: нет Всего: нет |
Здравствуйте. Подскажите пожалуйста как сделать?
например пишу в файл (текстовый)
/*где то в другом месте программы из другого потока вот надо построчно считывать вводимый файл если достигнут конец файла поспать 1 секунду затем проверить нет ли новых строк. если есть считать их опять до конца файла и снова уснуть и т.д желательно используя ifstream организовать своего- рода мониторинг добавления строк в файл. делаю вот так цикле
- не работает Модератор: Не забываем пользоваться кнопочкой "Код" Это сообщение отредактировал(а) bsa - 20.3.2012, 14:16 |
||||
|
|||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
А точнее? И лучше приведи весь код. Много зависит от того, как организованы потоки и как открывались файлы. |
|||
|
||||
IBS |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 214 Регистрация: 29.7.2008 Где: Белоруссия Репутация: нет Всего: 6 |
||||
|
||||
iSherhan |
|
||||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 20.9.2010 Репутация: нет Всего: нет |
А можно код
а то делаю вот так
При добавлении строк в файл из другого места программы в этом коде не не отображаются добавленные строки добавляю так
вообще такое возможно с помощью ostream ifstream ???? |
||||
|
|||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Работать не будет - вы 2 раза открыли один и тот же файл на чтение и на запись. Последствия непредсказуемые, т.к. у ?stream есть внутренние буфера, которые в данном случае надо явно сбрасывать после каждой записи (и перед каждым чтением). Или отключать буферизацию вообще Это сообщение отредактировал(а) xvr - 20.3.2012, 13:41 |
|||
|
||||
ambler |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 27.10.2009 Репутация: нет Всего: нет |
Этот код когда, прочитает все строки выходит из цикла. Можно сделать так: отслеживать изменение файла по его атрибутам, считывать из него всю информацию, запоминая кол-во прочитанных байтов, в случае изменения даты модификации, открывать файл, сдвигая позицию чтения, на кол-во прочитанных байт до этого. Для меж потокового взаимодействия лучше использовать критические секции, мьютексы. |
|||
|
||||
ambler |
|
||||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 27.10.2009 Репутация: нет Всего: нет |
Немного переписал код, с мониторингом добавления строк в файл справляется)
Это сообщение отредактировал(а) ambler - 20.3.2012, 15:31 |
||||
|
|||||
iSherhan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 20.9.2010 Репутация: нет Всего: нет |
Cпасибо всем ответившим. Проблема решена. оказалось, что
класс чтения из файла ifstream не хотел дальше читать из файла при достижении конца файла в данный момент. Но ofstream ведь продолжал добавлять данные. Вот если ifstream не доходил до конца а останавливал чтение допустим за одну строку до конца файла, то далее он читал и добавленные другим файловым потоком строки. Дело я думаю в установке при достижении конца файла флага ios::eof. После вызова ifstream::clear() поток далее читал из файла |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |