文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>mmap 函数 应用实例

mmap 函数 应用实例

时间:2010-10-15  来源:aaron_xueli

实例一:

代码如下:

#include <sys/mman.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>

int main(void)
{
    int fd, ret, fsize;
    char *ptr;   
    struct stat buf;

    fd = open("/etc/passwd", O_RDONLY);
    if (fd == -1) {
        perror("open");
        exit(1);
    }
   
    fstat(fd, &buf);
    fsize = buf.st_size;   
   
    ptr = mmap(NULL, fsize+1, PROT_READ | PROT_WRITE,
        MAP_PRIVATE, fd, 0);
    if (((void *)(-1)) == ptr) {
        perror("mmap");
        close(fd);
        exit(1);
    }   
   
    ptr[fsize] = '\0';
    printf("%s", ptr);
    munmap(ptr, fsize);
    close(fd);
    exit(0);
}

实例二

代码如下:

#include <sys/mman.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>

int main(void)
{
    char *ptr;   
    pid_t pid;
   
    ptr = (char *)mmap(NULL, 32, PROT_READ |
        PROT_WRITE, MAP_PRIVATE |
            MAP_SHARED, -1, 0);
    if (((void *)(-1)) == ptr) {
        perror("mmap");
        exit(1);
    }   
   
    pid = fork();
    if (pid == -1) {
        perror("fork");
        munmap(ptr, 32);
        exit(1);
    }

    if (pid == 0) {
        strcpy(ptr, "Hello world!");
        munmap(ptr, 32);
        exit(0);
    }
    wait(NULL);
    printf("%s\n", ptr);
    munmap(ptr, 32);
    exit(0);
}

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载