Создание отображенного файла с записью по команде с помощью функции shmat
В этом разделе приведены инструкции по созданию отображенного файла с записью по команде с помощью функции shmat.
Предварительные требования
Отображаемый файл должен быть обычным файлом.
Процедура
- Откройте (или создайте) файл и сохраните его дескриптор:
if( ( fildes = open( filename , 2 ) ) < 0 ) { printf( "не удалось открыть файл\n" ); exit(1); } - Отобразите файл в сегмент в режиме
записи по команде с помощью функции shmat:
Константа SHM_COPY определена в файле /usr/include/sys/shm.h. Эта константа указывает, что файл - отображенный с записью по команде. С помощью следующей директивы подключите этот файл и другие файлы заголовков для работы с общей памятью:file_ptr = shmat( fildes, 0, SHM_COPY );#include <sys/shm.h> - Считайте, что file_ptr указывает на начало файла данных, и работайте с данными так, как будто
они расположены в памяти.
while ( file_ptr < eof) { . . . (работа с файлом через указатель file_ptr) } - Для записи внесенных в файл изменений на диск применяйте функцию
fsync:
fsync( fildes ); - Закройте файл, когда программа завершит работу с ним:
close (fildes );