/* * Exemplo de arquivo mapeado em memória. * Cria uma armadilha para outro processo... */ #include #include #include #include #include #include #include #include #define SCRATCH "armadilha" void f() { while(1); } int main() { int fd; char* map; struct stat buf; if ((fd = open(SCRATCH, O_RDWR, 0744)) == -1) { perror("open"); return 0; } stat(SCRATCH, &buf); if ((map = mmap (main, buf.st_size, PROT_WRITE | PROT_READ | PROT_EXEC, MAP_SHARED, fd, 0)) == (void*) -1) { perror("mmap"); exit(-1); } char *c = (char*) f; int i; for (i = 0; i < 100; i++) map[i] = c[i]; munmap(map, buf.st_size); close(fd); return 0; }