|
|||||||
|
|
MPROTECTSection: Manuel du programmeur Linux (2)Updated: 18 juillet 2003 Index Return to Main Contents NOMmprotect - Contrôler les autorisations d'accès à une partie de la mémoire.SYNOPSIS#include <sys/mman.h> int mprotect(const void *addr, size_t *len, int prot); DESCRIPTIONmprotect contrôle la manière d'accéder à une portion de la mémoire. Si un accès interdit se produit, le programme reçoit un signal SIGSEGV.prot est un OU binaire ( | ) entre les valeurs suivantes :
La nouvelle protection remplace toute autre protection précédente. Par exemple, si la mémoire a été marquée précédemment PROT_READ, et si l'on appelle mprotect avec PROT_WRITE, la zone concernée ne sera plus lisible. VALEUR RENVOYÉEmprotect renvoie 0 si il réussit, ou -1 s'il échoue, auquel cas errno contient le code d'erreur.ERREURS
EXEMPLE D'UTILISATION#include <stdio.h> #include <stdlib.h> #include <errno.h> #include <sys/mman.h> #include <limits.h> /* pour avoir PAGESIZE */ #ifndef PAGESIZE #define PAGESIZE 4096 #endif int main(void) { char *p; char c; /* Allocation d'un buffer, protection par défaut PROT_READ|PROT_WRITE. */ p = malloc(1024 + PAGESIZE - 1); if (!p) { perror("Impossible d'allouer suffisamment de mémoire"); exit(errno); } /* * Aligner p sur un multiple de PAGESIZE (que l'on suppose être * une puissance de 2) */ p = (char *) (((int) p + PAGESIZE-1) & ~(PAGESIZE-1)); c = p[666]; /* lecture ok */ p[666] = 42; /* ecriture ok */ /* Buffer marqué en lecture-seule */ if (mprotect(p, 1024, PROT_READ)) { perror("Impossible d'utiliser mprotect"); exit(errno); } c = p[666]; /* lecture ok */ p[666] = 42; /* écriture, fin du programme avec SIGSEGV */ exit(0); } CONFORMITÉSVr4, POSIX.1b (anciennement POSIX.4). SVr4 définit un code d'erreur EAGAIN supplémentaire. Les conditions d'erreur SVr4 ne correspondent pas tout à fait à celles de Linux. POSIX.1B précise que mprotect ne peut être utilisé que sur des zones de mémoire obtenues avec mmap(2).VOIR AUSSImmap(2)TRADUCTIONChristophe Blaess, 1996-2003.
Index
| ||||||
|
|
|
Home :: Copyright :: Privacy :: Credits :: Get a free Linuxinfor Email Account Document on this page is part of "Linuxinfor Man Pages in HTML Format: man2". See Index Page for more info about Authorship and Copyright. 1999-2009 Linuxinfor.com. No rights reserved. |