[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Программирование: Разработка и отладка программ


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

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

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

Процедура

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

  1. Для создания отображенного файла:
    1. Откройте (или создайте) файл и сохраните его дескриптор:

      if( ( fildes = open( filename , 2 ) ) < 0 )
      {
              printf( "не удалось открыть файл\n" );
              exit(1);
      }
      
    2. Отобразите файл в сегмент с помощью функции shmat:

      file_ptr=shmat (fildes, 0, SHM_MAP);
      

      Константа SHM_MAP определена в файле /usr/include/sys/shm.h. Эта константа указывает, что файл - отображенный. С помощью следующей директивы подключите этот файл и другие файлы заголовков для работы с общей памятью:

      #include <sys/shm.h>
      
  2. Для обнаружения конца отображенного файла:
    1. С помощью функции lseek перейдите в конец файла:

      eof = file_ptr + lseek(fildes, 0, 2);
      

      В этом примере значение eof устанавливается равным адресу конца файла + 1. Применяйте это значение в качестве маркера конца файла.

    2. Считайте, что file_ptr указывает на начало файла данных, и работайте с данными так, как будто они находятся в памяти:

      while ( file_ptr < eof)
      {
            .
            .
            .
            (работа с файлом через указатель file_ptr)
      }
      

      Примечание:Процедуры read и write могут работать с отображенными файлами, при этом будут получены те же результаты, что и при работе через указатели.
    3. Закройте файл, когда программа завершит работу с ним:

      close (fildes );
      

Связанная информация

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

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

Функции shmat, shmctl, shmdt, shmget.


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]