Создание отображенного файла с записью по команде с помощью функции shmat

В этом разделе приведены инструкции по созданию отображенного файла с записью по команде с помощью функции shmat.

Предварительные требования

Отображаемый файл должен быть обычным файлом.

Процедура

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