Création d'un fichier de données mappé de copie sur écriture avec la sous-routine shmat

Cette section explique comment créer un fichier de données mappé de copie sur écriture avec la sous-routine shmat .

Condition de prérequis

Le fichier à mapper est un fichier standard.

Procédure

  1. Ouvrez (ou créez) le fichier et sauvegardez le descripteur de fichier:
    if( ( fildes = open( filename , 2 ) ) < 0 )
    {
            printf( "cannot open file\n" );
            exit(1);
    }
  2. Mappez le fichier à un segment en tant que copie sur écriture, avec la sous-routine shmat :
    file_ptr = shmat( fildes, 0, SHM_COPY );
    :NONE.SHM_COPYest définie dans le fichier /usr/include/sys/shm.h . Cette constante indique que le fichier est un fichier mappé de copie sur écriture. Incluez ce fichier d'en-tête et d'autres fichiers d'en-tête de mémoire partagée dans un programme avec les directives suivantes:
    #include <sys/shm.h>
  3. Utilisationfile_ptrcomme un pointeur vers le début du fichier de données, et accéder aux données comme si elles étaient en mémoire.
    while ( file_ptr < eof)
    {
          .
          .
          .
          (references to file using file_ptr)
    }
  4. Utilisez la sous-routine fsync pour écrire les modifications apportées à la copie du fichier sur le disque afin de sauvegarder les modifications:
    fsync( fildes );
  5. Fermez le fichier lorsque le programme a fini de l'utiliser:
    close( fildes );