Chinaunix首页 | 论坛 | 博客
  • 博客访问: 160487
  • 博文数量: 83
  • 博客积分: 3956
  • 博客等级: 中校
  • 技术积分: 663
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-24 16:29
文章分类

全部博文(83)

文章存档

2010年(83)

我的朋友

分类: C/C++

2010-10-15 10:02:53

实例一:

代码如下:

#include
#include
#include
#include
#include
#include
#include

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
#include
#include
#include
#include
#include
#include
#include

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);
}

阅读(518) | 评论(0) | 转发(0) |
0

上一篇:动态内存程序实例

下一篇:轮询和中断

给主人留下些什么吧!~~