4.7. Форсирование записи данных на диск

4.7. Форсирование записи данных на диск

Ранее мы описали флаги O_DSYNC, O_RSYNC и O_SYNC для open(). Мы отметили, что использование этих флагов может замедлить программу, поскольку write() не возвращается до тех пор, пока все данные не будут записаны на физический носитель.

Со слегка более высоким уровнем риска мы можем сами испечь свое пирожное и съесть его. Это осуществляется путем открытия файла без указания флагов O_xSYNC, но с последующим использованием одного из следующих двух системных вызовов в любой момент, когда это необходимо для безопасного перемещения данных на физический носитель:

#include <unistd.h>

int fsync(int fd); /* POSIX FSC */

int fdatasync(int fd); /* POSIX SIO */

Системный вызов fdatasync() подобен O_DSYNC: он форсирует запись данных на конечное физическое устройство. Системный вызов fsync() подобен O_SYNC, форсируя запись на физическое устройство не только данных файла, но и вспомогательных данных. Вызов fsync() более переносим; он существовал в мире Unix в течение более продолжительного времени, и вероятность его наличия среди широкого ряда систем больше.

Можно использовать эти вызовы с указателями файлов <stdio.h>, вызвав сначала fflush(), а затем fileno() для получения дескриптора нижележащего файла. Вот функция fpsync(), которая может использоваться для заключения обеих операций в один вызов. Она возвращает в случае успеха 0:

/* fpsync --- синхронизация переменной stdio FILE* */

int fpsync(FILE *fp) {

 if (fp == NULL || fflush(fp) == EOF || fsync(fileno(fp)) < 0)

  return -1;

 return 0;

}

Технически оба этих вызова являются расширениями базового стандарта POSIX: fsync() в расширении «Синхронизация файлов» (FSC), a fdatasync() в расширении «Синхронизированный ввод и вывод». Тем не менее, можно без проблем использовать их в системе GNU/Linux

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Стереть диск

Из книги Запись CD и DVD: профессиональный подход автора Бахур Виктор

Стереть диск Щелкнув в окне Nero Express на кнопке Стереть диск, вы откроете окно Стереть перезаписываемый диск (рис. 6.13). Рис. 6.13. Стереть перезаписываемый диск.Данное окно можно также открыть следующими способами.• В окне Nero Burning ROM выполнить команду Рекордер ? Стереть


Жесткий диск

Из книги Видеосамоучитель монтажа домашнего видео в Adobe Premiere Pro CS3 автора Днепров Александр Г

Жесткий диск Вы будете работать с данными, которые представляют собой видеофайлы. Они занимают достаточно много места на жестком диске компьютера. Каких-либо минимальных требований к жесткому диску компьютера нет, поскольку здесь все зависит от ваших потребностей и


Запись данных на компакт-диск

Из книги Windows Vista без напряга автора Жвалевский Андрей Валентинович

Запись данных на компакт-диск Если на вашем компьютере установлен пишущий оптический привод, то вы легко можете переносить данные на компакт-диск или DVD (в зависимости от типа привода), даже без специальных программ записи.Процедура такова.1. Вставьте чистый компакт-диск


(2.7) Можно ли отконвеpтировать диск FAT32 в NTFS без потеpи данных?

Из книги Win2K FAQ (v. 6.0) автора Шашков Алексей

(2.7) Можно ли отконвеpтировать диск FAT32 в NTFS без потеpи данных? 1. Можно воспользоваться командой CONVERT том: /FS:NTFS [/V] Преобразование произойдет при следующей перезагрузке. Потери информации не при этом не будет, но нужно иметь в виду, что размер кластера после конвертации


Запись данных на компакт-диск

Из книги Windows Vista автора Вавилов Сергей

Запись данных на компакт-диск Если на вашем компьютере установлен записывающий оптический привод, то вы легко можете переносить данные на CD или DVD (в зависимости от типа привода), используя средства Windows Vista. В предыдущих версиях Windows запись проводилась в два этапа: сначала


Основные принципы чтения и записи XML-данных

Из книги WinXP FAQ (Часто задаваемые вопросы по ОС Windows XP) автора Шашков Алексей

Основные принципы чтения и записи XML-данных В главах 5, "ADO.NET: объект DataSet", и 6, "ADO.NET: объект DataAdapter" демонстрируются программируемые и прямые способы загрузки данных в объект DataSet из базы данных. Еще один метод загрузки данных основан на чтении XML-данных. Как и следовало


2.9. Можно ли отконвеpтировать диск FAT32 в NTFS без потеpи данных?

Из книги Самоучитель работы на компьютере автора Колисниченко Денис Николаевич

2.9. Можно ли отконвеpтировать диск FAT32 в NTFS без потеpи данных? 1. Можно воспользоваться командой CONVERT том: /FS:NTFS [/V] Преобразование произойдет при следующей перезагрузке. Потери информации не при этом не будет, но нужно иметь в виду, что размер кластера после конвертации


1.3.4. Жесткий диск

Из книги 300 лучших программ на все случаи жизни автора Леонтьев Виталий Петрович

1.3.4. Жесткий диск Жесткий диск (он же HDD, Hard Disk Drive, винчестер и «винт») используется, как вы уже знаете, для постоянного хранения информации. Информация с жесткого диска никуда не исчезнет при выключении питания. Жесткий диск — это не только электронное, но и механическое


Жесткий диск

Из книги PGP: Кодирование и шифрование информации с открытым ключом. автора Левин Максим

Жесткий диск HDDLifeСайт: http://www.hddlife.com/rus/Размер: 5 МбСтатус: Freeware, Shareware (Pro)Цена: 500 рублей (Pro)Описание разработчиков: Фотографии ваших близких, видеофильмы из путешествий, ваш ежедневник и записная книжка, письма друзей, служебная информация и документы – вы готовы потерять


PGP диск.

Из книги Компьютерная обработка звука автора Загуменнов Александр Петрович

PGP диск. PGP диск — это удобное приложение, которое позволяет вам отвести некоторую часть вашего жесткого диска для хранения конфиденциальной информации. Это зарезервированное место используется для создания файла под именем <PGP disk>.Хотя это всего лишь один файл, он


Как установить PGP диск.

Из книги Недокументированные и малоизвестные возможности Windows XP автора Клименко Роман Александрович

Как установить PGP диск. Как только новый диск будет создан, программа PGP автоматически его установит с тем, чтобы вы могли начать его использовать. После того, как вы закончили работу с конфиденциальной информацией, необходимо отключить диск. После отключения диск его


Жесткий диск

Из книги Как приручить компьютер за несколько часов автора Ремнева Ирина

Жесткий диск При использовании накопителей с несколькими жесткими дисками для защиты информации можно производить параллельную запись на несколько дисков (RAID-массивы). Таким образом, при выходе из строя одного диска записанная на нем информация может быть


Угроза получения учетной записи администратора с помощью учетной записи опытного пользователя

Из книги Windows 10. Секреты и устройство автора Алмаметов Владимир

Угроза получения учетной записи администратора с помощью учетной записи опытного пользователя Как говорилось раньше, использование группы Опытные пользователи не приветствуется Microsoft, так как данная группа имеет очень многие права в системе. В этой главе хотелось бы


Шаг 3. Выбираем диск

Из книги автора

Шаг 3. Выбираем диск В открывшемся окне вам придется опять делать выбор. Теперь нужно выбрать диск, на который устанавливаться операционная система. Вы можете поставить операционную систему (сокращенно ОС) на любой из имеющихся на компьютере дисков, например на диски С и D.