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
- 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); } - Mappez le fichier à un segment en tant que copie sur écriture, avec la sous-routine shmat :
: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:file_ptr = shmat( fildes, 0, SHM_COPY );#include <sys/shm.h> - 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) } - 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 ); - Fermez le fichier lorsque le programme a fini de l'utiliser:
close( fildes );