Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > Чтени и запись в файл, Выводить что добавили в фай |
Автор: iSherhan 19.3.2012, 16:59 | ||||
Здравствуйте. Подскажите пожалуйста как сделать? например пишу в файл (текстовый)
/*где то в другом месте программы из другого потока вот надо построчно считывать вводимый файл если достигнут конец файла поспать 1 секунду затем проверить нет ли новых строк. если есть считать их опять до конца файла и снова уснуть и т.д желательно используя ifstream организовать своего- рода мониторинг добавления строк в файл. делаю вот так цикле
- не работает Модератор: Не забываем пользоваться кнопочкой "Код" |
Автор: JackYF 19.3.2012, 22:03 |
А точнее? И лучше приведи весь код. Много зависит от того, как организованы потоки и как открывались файлы. |
Автор: IBS 19.3.2012, 22:18 |
Можно попробовать заключить это дело в еще один while который останавливается также по концу файла, а после внутреннего цикла(со считыванием из файла) сделать sleep |
Автор: iSherhan 20.3.2012, 05:16 | ||||
А можно код а то делаю вот так
При добавлении строк в файл из другого места программы в этом коде не не отображаются добавленные строки добавляю так
вообще такое возможно с помощью ostream ifstream ???? |
Автор: xvr 20.3.2012, 13:41 |
Работать не будет - вы 2 раза открыли один и тот же файл на чтение и на запись. Последствия непредсказуемые, т.к. у ?stream есть внутренние буфера, которые в данном случае надо явно сбрасывать после каждой записи (и перед каждым чтением). Или отключать буферизацию вообще |
Автор: ambler 20.3.2012, 14:12 | ||
Этот код когда, прочитает все строки выходит из цикла. Можно сделать так: отслеживать изменение файла по его атрибутам, считывать из него всю информацию, запоминая кол-во прочитанных байтов, в случае изменения даты модификации, открывать файл, сдвигая позицию чтения, на кол-во прочитанных байт до этого. Для меж потокового взаимодействия лучше использовать критические секции, мьютексы. |
Автор: ambler 20.3.2012, 15:31 | ||||
Немного переписал код, с мониторингом добавления строк в файл справляется)
|
Автор: iSherhan 21.3.2012, 03:08 |
Cпасибо всем ответившим. Проблема решена. оказалось, что класс чтения из файла ifstream не хотел дальше читать из файла при достижении конца файла в данный момент. Но ofstream ведь продолжал добавлять данные. Вот если ifstream не доходил до конца а останавливал чтение допустим за одну строку до конца файла, то далее он читал и добавленные другим файловым потоком строки. Дело я думаю в установке при достижении конца файла флага ios::eof. После вызова ifstream::clear() поток далее читал из файла |