Bash-Linux.com : Le SHELL pour les nuls

  Actuellement 46 lignes de commande disponibles
login as: root
root@213.186.33.18's password:
Last login: Sun Aug 1 7:53:39 2010 from 38.107.191.100
[root@bash-linux ~] # echo "Bienvenue sur Bash-Linux.com"_
 Manuel des commandes UNIX (man) Version française

Indiquez la fonction :

Man Mmap en français

MMAP(2) Manuel du programmeur Linux MMAP(2)
 
NOM


mmap, munmap - Etablir/supprimer une projection en memoire (map/unmap) des fichiers ou des peripheriques.
 
SYNOPSIS


#include void *mmap(void *start, size_t length, int prot,int flags , int fd, off_t offset); int munmap(void *start, size_t length);
 
DESCRIPTION


La fonction mmap() demande la projection en memoire de length octets commencant a la position offset depuis un fichier (ou un autre objet) indique par le descripteur fd, de preference a l'adresse pointee par start. Cette adresse n'est qu'une preference, generalement 0. La ver- itable adresse ou l'objet est projete est renvoyee par la fonction mmap(), et n'est jamais nulle. L'argument prot indique la protection que l'on desire pour cette zone de memoire, et ne doit pas entrer en conflit avec le mode d'ouverture du fichier. Il s'agit soit de PROT_NONE (le contenu de la memoire est inaccessible) soit d'un OU binaire entre les constantes suivantes : PROT_EXEC On peut executer du code dans la zone memoire. PROT_READ On peut lire le contenu de la zone memoire. PROT_WRITE On peut ecrire dans la zone memoire. PROT_NONE Les pages ne peuvent pas etre accedees. Le parametre flags indique le type de fichier projete, les options de projection, et si les modifications faites sur la portion projetee sont privees ou doivent etre partagees avec les autres references. Les options sont : MAP_FIXED N'utiliser que l'adresse indiquee. Si la region de la memoire specifiee par start et len chevauche les pages d'un mappage existant, la partie chevauchee du mappage existant sera ecrasee. Si l'adresse indiquee ne peut etre utilisee, mmap() echouera. Si est specifie, start doit etre un multiple de la longueur de page. Il est deconseille d'utiliser cette option. MAP_SHARED Partager la projection avec tout autre processus utilisant l'objet. L'ecriture dans la zone est equivalente a une ecriture dans le fichier. En revanche, ce dernier n'est pas necessaire- ment mis a jour tant qu'on n'a pas appele msync(2) ou munmap(2). MAP_PRIVATE Creer une projection privee, utilisant la methode de copie a l'ecriture. L'ecriture dans la zone ne modifie pas le fichier. Il n'est pas precise si les changements effectues dans le fichier apres l'appel mmap() seront visibles. Vous devez indiquer soit MAP_SHARED, soit MAP_PRIVATE. Les trois attributs ci-dessus sont decrits dans POSIX.1-20012. Linux propose egalement des attributs non standards : MAP_DENYWRITE Cet attribut est ignore. (Autrefois, une tentative d'ecriture dans le fichier sous-jacent echouait avec l'erreur ETXTBUSY. Mais ceci permettait des attaques de deni de service). MAP_EXECUTABLE Cet attribut est ignore. MAP_NORESERVE Ne pas reserver d'espace de swap pour les pages de cette projec- tion. Une telle reservation garantit que l'on puisse modifier la projection. Sans reservation, on peut recevoir un signal SIGSEGV durant une ecriture, s'il n'y a plus de memoire physique disponible. Voir egalement la discussion sur le fichier /proc/sys/vm/overcommit_memory dans proc(5). Dans les noyaux precedant le 2.6, cet attribut n'avait d'effet que pour les pro- jections privees. MAP_LOCKED (depuis Linux 2.5.37) Verrouille la page projetee en memoire a la maniere de mlock(). Cet attribut est ignore sur les noyaux plus anciens. MAP_GROWSDOWN Utilise pour les piles. Indique au systeme de gestion de la mem- oire virtuelle que la projection doit s'etendre en croissant vers le bas de la memoire. MAP_ANONYMOUS La projection n'est supportee par aucun fichier. Les arguments fd et offset sont ignores. Cet attribut, utilise en conjonction de MAP_SHARED, n'est supporte sous Linux que depuis le noyay 2.4. MAP_ANON Alias de MAP_ANONYMOUS. Deconseille. MAP_FILE Attribut pour compatibilite. Ignore. MAP_32BIT Faire la projection dans les premiers 2 Go de l'espace d'adres- sage du processus. Ignore si MAP_FIXED est present. Cet attribut n'est supporte que sur x86-64 pour les programmes 64-bits. MAP_POPULATE (depuis Linux 2.5.46) Remplit les tables de pages pour une projection de fichier en effectuant une lecture anticipee sur le fichier. Les acces ulterieurs a la projection ne seront pas bloques par des fautes de pages. MAP_NONBLOCK (depuis Linux 2.5.46) N'a de sens qu'en conjonction avec MAP_POPULATE. Ne pas efectuer de lecture anticipee : creer seulement les entrees de tables de page pour les pages deja presentes en RAM. Certains systemes utilisent les attributs supplementaires MAP_AUTOGROW, MAP_AUTORESRV, MAP_COPY, et MAP_LOCAL. fd doit etre un descripteur de fichier valide, sauf si on utilise MAP_ANONYMOUS. Si MAP_ANONYMOUS est positionne, fd est ignore sous Linux. Toutefois, certaines implementations reclament que fd valle -1 si MAP_ANONYMOUS (ou MAP_ANON) est specifie, et les applications porta- bles devraient s'en assuree. L'argument offset doit normalement etre un multiple de la taille de page renvoyee par l'appel getpagesize(2). La memoire obtenue par mmap() est preservee lors d'un fork(2), avec les memes attributs. La projection doit avoir une taille multiple de celle des pages. Pour un fichier dont la longueur n'est pas un multiple de la taille de page, la memoire restante est remplie de zeros lors de la projection, et les ecritures dans cette zone n'affectent pas le fichier. Les effets de la modification de la taille du fichier sous-jacent sur les pages corre- spondant aux zones ajoutees ou supprimees ne sont pas precises. L'appel systeme munmap() detruit la projection dans la zone de memoire specifiee, et s'arrange pour que toute reference ulterieure a cette zone memoire declenche une erreur d'adressage. La projection est aussi automatiquement detruite lorsque le processus se termine. l'inverse, la fermeture du descripteur de fichier ne supprime pas la projection. L'adresse start doit etre un multiple de la taille de page. Tous les pages contenant une partie de l'intervalle indique sont liberees, et tout acces ulterieur declenchera SIGSEGV. Aucune erreur n'est detectee si l'intervalle indique ne contient pas de page projetee. Pour les projections supportees par un fichier, le champ st_atime du fichier peut etre mis a jour a tout moment entre l'appel mmap() et le munmap() correspondant. Le premier acces dans la page projetee mettra le champ a jour si cela n'a pas ete deja fait. Les champs st_ctime et st_mtime pour un fichier projete avec PROT_WRITE et MAP_SHARED seront mis a jour apres une ecriture dans la region pro- jetee, et avant l'eventuel msync() suivant avec attribut MS_SYNC ou MS_ASYNC.
 
VALEUR RENVOYEE


mmap() renvoie un pointeur sur la zone de memoire, s'il reussit. En cas d'echec il retourne la valeur MAP_FAILED (c.-a-d. (void *) -1) et errno contient le code d'erreur. munmap() renvoie 0 s'il reussit. En cas d'echec, -1 est renvoye et errno contient le code d'erreur (probablement EINVAL).
 
NOTES


Suivant l'architecture, PROT_READ peut include PROT_EXEC ou non. Les programmes portables doivent toujours indiquer PROT_EXEC s'ils veulent executer du code dans la projection.
 
ERREURS


EACCES Le descripteur ne correspond pas a un fichier normal, ou on demande une projection privee MAP_PRIVATE mais fd n'est pas ouvert en lecture, ou on demande une projection partagee MAP_SHARED avec protection PROT_WRITE, mais fd n'est pas ouvert en lecture et ecriture (O_RDWR). Ou encore PROT_WRITE est demande, mais le fichier est ouvert en ajout seulement. EAGAIN Le fichier est verrouille, ou trop de pages ont ete verrouillees en memoire (voir setrlimit(2)). EBADF fd n'est pas un descripteur de fichier valide (et MAP_ANONYMOUS n'etait pas precise). EINVAL start ou length ou offset sont invalides. (Par exemple : zone trop grande, ou non alignee sur une frontiere de page). ENFILE La limite du nombre total de fichiers ouverts sur le systeme a ete atteinte. ENODEV Le systeme de fichiers sous-jacent ne supporte pas la projection en memoire. ENOMEM pas assez de memoire, ou le nombre maximal de projection par processus a ete depasse. EPERM L'argument prot a demande PROT_EXEC mais la zone appartient aa un fichier sur une systeme de fichiers monte sans permissions d'execution.
 
ETXTBSY


MAP_DENYWRITE a ete reclame mais fd est ouvert en ecriture. L'acces a une zone de projection peut declencher les signaux suivants :
 
SIGSEGV


Tentative d'ecriture dans une zone en lecture seule. SIGBUS Tentative d'acces a une portion de la zone qui ne correspond pas au fichier (par exemple apres la fin du fichier, y compris lorsqu'un autre fichier l'a tronque).
 
DISPONIBILITE


Sur les systemes POSIX sur lesquels mmap(), msync() et munmap() sont disponibles, la constante symbolique _POSIX_MAPPED_FILES est definie dans comme etant une valeur superieure a 0. (Voir aussi sysconf(3).)
 
CONFORMITE


SVr4, BSD 4.4, POSIX.1-2001.
 
BOGUES


Sous Linux, il n'y a aucune garantie comme celle suggeree sous MAP_NORESERVE. Par defaut, tout processus peut etre tue a tout moment lorsque le systeme s'execute en dehors de de l'espace memoire. Dans les noyaux anterieurs au 2.6.7, l'attribut MAP_POPULATE n'a d'effet que si prot a la valeur PROT_NONE.
 
VOIR AUSSI


getpagesize(2), mincore(2), mlock(2), mmap2(2), mremap(2), msync(2), remap_file_pages(2), setrlimit(2), shm_open(3) B.O. Gallmeister, POSIX.4, O'Reilly, pp. 119-124 et 365-369.
 
TRADUCTION


Ce document est une traduction realisee par Christophe Blaess le 14 octobre 1996 et revisee le 14 aot 2006. L'equipe de traduction a fait le maximum pour realiser une adaptation francaise de qualite. La version anglaise la plus a jour de ce document est toujours consultable via la commande : LANG=C man 2 mmap . N'hes- itez pas a signaler a l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel. Linux 2.6.9 8 decembre 2004 MMAP(2)


 Dernières recherches
Man  en anglais Man mmap en anglaisMan  en français Man mmap en français
Man  en anglais Man expr en anglaisMan  en français Man expr en français
Man  en anglais Man write en anglaisMan  en français Man write en français
Man  en anglais Man forkpty en anglaisMan  en français Man forkpty en français
Man  en anglais Man grantpt en anglaisMan  en français Man grantpt en français
Man  en anglais Man tr en anglaisMan  en français Man tr en français
Man  en anglais Man sh en anglaisMan  en français Man sh en français
Man  en anglais Man shmctl en anglaisMan  en français Man shmctl en français
Man  en anglais Man ld en anglaisMan  en français Man ld en français
Man  en anglais Man connect en anglaisMan  en français Man connect en français
Man  en anglais Man confstr en anglaisMan  en français Man confstr en français
Man  en anglais Man master en anglaisMan  en français Man master en français
Man  en anglais Man wc en anglaisMan  en français Man wc en français
Man  en anglais Man strstr en anglaisMan  en français Man strstr en français
Man  en anglais Man sched_setaffinity en anglaisMan  en français Man sched_setaffinity en français

 Recherche

Dans ce moteur de recherche, vous pouvez taper directement votre besoin, en une phrase normale, humaine.
Exemple : vous cherchez comment remplacer un mot par un autre dans tous les fichiers d'un certain dossier. Vous pouvez écrire "Comment remplacer un mot par un autre dans tous les fichiers d'un dossier". Le moteur vous ramenera les résultats en fonction de leur pertinence.
Vous pouvez bien sûr ne chercher qu'un seul mot-clé, par exemple "find".
 Toutes les lignes de code
Par popularité
Par fonction
Recherche avancée
 Les logiciels SHELL/SSH
Putty
Astuces Bash
Faire du SHELL avec PHP!
 La doc officielle
Les man Linux en français
Les man Linux en anglais
 Proposer vos bash
Partagez vos lignes!
 Les requêtes
Déposer une requête
Voir/répondre à une requête
 Quelques sites interessants
Bons sites pour apprendre
 Rechercher