#include <sys/mman.h> int mprotect(const void *addr, size_t len, int prot);
prot´Â ´ÙÀ½ °ªµéÀÇ ºñÆ® ORÀÌ´Ù:
»õ·Î ¼³Á¤ÇÑ º¸È£ ¸ðµå´Â ±âÁ¸ÀÇ º¸È£ ¸ðµå¸¦ ´ëüÇÑ´Ù. ¿¹¸¦ µé¾î, ÀÌÀü¿¡ ¸Þ¸ð¸®°¡ PROT_READ·Î Ç¥½ÃµÇ¾î Àִµ¥, mprotect°¡ prot¸¦ PROT_WRITE·Î È£ÃâµÈ´Ù¸é, ±× ¿µ¿ªÀº ´õ ÀÌ»ó Àбâ Àü¿ëÀÌ ¾Æ´Ï´Ù.
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/mman.h>
#include <limits.h>    /* PAGESIZE ¶§¹®¿¡ */
#ifndef PAGESIZE
#define PAGESIZE 4096
#endif
int
main(void)
{
    char *p;
    char c;
    /* ¹öÆÛ¸¦ ÇÒ´çÇÑ´Ù; ±âº»ÀûÀ¸·Î PROT_READ|PROT_WRITE
           º¸È£ ¸ðµå·Î ¼³Á¤µÈ´Ù. */
    p = malloc(1024+PAGESIZE-1);
    if (!p) {
        perror("Couldn't malloc(1024)");
        exit(errno);
    }
        /* PAGESIZEÀÇ ¹è¼ö°¡ µÇµµ·Ï Á¤·Ä; 2ÀÇ Á¦°öÀ¸·Î °¡Á¤ÇÑ´Ù. */
    p = (char *)(((int) p + PAGESIZE-1) & ~(PAGESIZE-1));
    c = p[666];         /* Àбâ; ok */
    p[666] = 42;        /* ¾²±â; ok */
        /* ¹öÆÛ¸¦ Àбâ Àü¿ëÀ¸·Î ÇÑ´Ù. */
    if (mprotect(p, 1024, PROT_READ)) {
        perror("Couldn't mprotect");
        exit(errno);
    }
    c = p[666];         /* Àбâ; ok */
    p[666] = 42;        /* ¾²±â; ÇÁ·Î±×·¥Àº SIGSEGV·Î Á״´Ù. */
    exit(0);
}