En tête de fichier:
#inclureSyntaxe:
void * mmap (void * adresse, taille_t, longueur int, drapeau int, int filets,Arguments:
La fonction prend 6 arguments:
adresse:
Cet argument donne une adresse de départ préférée pour la cartographie. Si une autre cartographie n'existe pas là-bas, alors le noyau choisira une limite de page à proximité et créera le mappage; Sinon, le noyau choisit une nouvelle adresse. Si cet argument est nul, alors le noyau peut placer la cartographie partout où elle le juge.
longueur:
C'est le nombre d'octets qui doivent être cartographiés.
protéger:
Cet argument est utilisé pour contrôler le type d'accès autorisé. Cet argument peut être logique «ou» des drapeaux suivants Prot_read | Prot_write | Prot_exec | Prot_none. Les types d'accès à lire, écrire et exécuter sont les autorisations sur le contenu.
Frappeurs:
Cet argument est utilisé pour contrôler la nature de la carte. Voici quelques valeurs communes des drapeaux:
FiledS:
Ceci est le descripteur de fichier qui doit être mappé.
compenser:
Ceci est compensé à partir de l'endroit où le mappage de fichiers a commencé. En termes simples, le mappage se connecte à (compenser) pour (décalage + longueur-1) octets pour le fichier ouvert sur licenciés descripteur.
Valeurs de retour:
Sur le succès, le mmap () retourne 0; Pour l'échec, la fonction renvoie map_failed.
Pictorialement, nous pouvons représenter la fonction MAP comme suit:
Pour un mappage de la région cartographiée Munmap () La fonction est utilisée:
Syntaxe:
int munmap(annuler *adresse, size_t longueur));
Valeurs de retour:
Sur le succès, le Munmap () retourne 0; Pour l'échec, la fonction renvoie -1.
Exemples:
Maintenant, nous verrons un exemple de programme pour chacun des éléments suivants en utilisant l'appel système mmap ():
Exemple 1.c
#inclureDans l'exemple1.c Nous allouons la mémoire en utilisant mmap. Ici, nous avons utilisé Prot_read | Protection prot_write pour la lecture et l'écriture dans la région mappée. Nous avons utilisé le map_private | Map_anonymous drapeau. Map_private est utilisé car la région de cartographie n'est pas partagée avec d'autres processus, et Map_anonymous est utilisé car ici, nous n'avons cartographié aucun fichier. Pour la même raison, le descripteur de fichiers et le compenser la valeur est définie sur 0.
Exemple2.c
#inclure