打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
映射IO实例
#include "common.h"


int main(int args, char **argv)
{
    if(args < 2)
    {
        printf("请指定文件的大小!\n");
        return -1;
    }
    if(!access("dat", F_OK))
    {
        unlink("dat");
    }

    struct stat st;

    int fd = open("dat", O_CREAT | O_RDWR, 0644);
    ERROR(fd < 0, "open dat", err1);

    fstat(fd, &st);
    printf("size=%d\n", st.st_size);

    //将文件的大小修改为1024
    ftruncate(fd, atoi(argv[1]));

    fstat(fd, &st);
    printf("size=%d\n", st.st_size);
    
    //映射
    void *dat = mmap(NULL, st.st_size, PROT_READ | PROT_WRITE, MAP_SHARED,\
                        fd, 0);
    close(fd);
    strcpy(dat, "hello, fuck you!\n");

    //解除映射
    munmap(dat, st.st_size);

    

    return 0;
err1:
    return -1;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Linux 下的 dup 和 dup2 函数简介
dup & dup2
linux进程间通信方式之匿名管道
Linux进程通信 FIFO
readv/writev
GCC优化选项的各种含义以及潜藏风险
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服