Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2009, 11:34   #1
Lehatut
Новичок
Джуниор
 
Регистрация: 20.02.2009
Сообщений: 2
По умолчанию Быстрая запись лог-файла

Добрый день, коллеги. Возникла такая загвоздка. Есть приложение, оно записывает лог-файл. Чтобы записать строчку, файл открывается, записывается строчка, потом файл закрывается. Это получается медленно - зря тратится время на открытие/закрытие. Чтобы работало быстрее, было бы неплохо файл открыть один раз - при старте и закрыть при выходе из приложения. Но. Если происходит ошибка или зависание(такое бывает, идет отладка), после перезагрузки содержимое файла оказывается пустым, потому что файл не был закрыт.
Как сделать так, чтобы при неожиданном зависании/перезагрузке лог-файл сохранял бы свое содержимое?
Lehatut вне форума Ответить с цитированием
Старый 20.02.2009, 13:34   #2
DEADHUNT
Пользователь
 
Регистрация: 23.10.2008
Сообщений: 48
По умолчанию

Код:
FILE * stream = fopen("log.txt", "w");
setvbuf(stream, NULL, _IONBF, 0);
и никакого WINAPI не надо.
DEADHUNT вне форума Ответить с цитированием
Старый 20.02.2009, 13:53   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Можно накапливать логи в буфер и периодически сбрасывать в файл. Это даст + в скорости и в случае зависания потеряем не все логи, а только часть последних.
А можно выделить отдельный процесс, который будет заниматься только логами. Если в основном процессе происходит авария, второй процесс сбрасывает накопившиеся логи в файл.
Arigato вне форума Ответить с цитированием
Старый 20.02.2009, 15:59   #4
Lehatut
Новичок
Джуниор
 
Регистрация: 20.02.2009
Сообщений: 2
По умолчанию

Спасибо!
setvbuf попробовал - работает
Lehatut вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запись файла на винт TEHb Операционные системы общие вопросы 2 05.02.2009 10:13
Запись/чтение из файла (С++) alexov Общие вопросы C/C++ 15 18.01.2009 17:35
Создание лог-файла ScreN Общие вопросы Delphi 8 11.01.2009 11:28
Запись и чтение файла... Altera Общие вопросы Delphi 5 06.05.2008 20:22