Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Закрыть файл без сброса буферов / 6 сообщений из 6, страница 1 из 1
23.07.2014, 16:37
    #38704121
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрыть файл без сброса буферов
fclose() прежде чем закрыть файл записывает грязные буфера. Есть ли функция, которая
просто закроет дескрптор и освободит структуру не тратя времени на сброс буферов,
поскольку следующей строчкой будет удаление этого файла?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.07.2014, 16:50
    #38704132
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрыть файл без сброса буферов
Можно почитать в направлении fdatasync.

+У Роберта Лава в книге есть много материала на эту тему.
...
Рейтинг: 0 / 0
23.07.2014, 16:58
    #38704151
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрыть файл без сброса буферов
maytonМожно почитать в направлении fdatasync.
Проблема в том, что мне бы хотелось как раз обратного: закрыть файл перед его удалением и
к чёрту недописанное.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.07.2014, 17:16
    #38704172
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрыть файл без сброса буферов
Dimitry Sibiryakov,

Взять через fileno() дескриптор и закрыть через close() вместо fclose()
...
Рейтинг: 0 / 0
24.07.2014, 00:28
    #38704393
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрыть файл без сброса буферов
Anatoly MoskovskyDimitry Sibiryakov,

Взять через fileno() дескриптор и закрыть через close() вместо fclose()

Боюсь, что гарантировать это нельзя.
...
Рейтинг: 0 / 0
24.07.2014, 01:59
    #38704421
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрыть файл без сброса буферов
MasterZivБоюсь, что гарантировать это нельзя.
Смотря про какие буфера идет речь.
Если про тот что организуется в FILE над дескриптором - то я выше написал как его обойти.
Если про буфера в дисковом кеше ОС, то если данные оказались в дисковом буфере, то юзерская программа уже не контролирует их судьбу.
Можно недопустить использование дискового кеша. Есть соответствующие флаги у open() O_SYNC/O_DIRECT
Но это скорее всего замедлит и усложнит работу с файлом когда данные таки должны будут записаться на диск :)

Хотя я бы не заморачивался насчет дискового кеша.
Дело в том что закрытие файла не приводит к немедленному сбросу кеша на диск. Сброс производится асинхронно (кроме O_SYNC/O_DIRECT).
Поэтому на скорость закрытия это не должно влиять.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Закрыть файл без сброса буферов / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]