linux基础知识——mmap
生活随笔
收集整理的這篇文章主要介紹了
linux基础知识——mmap
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.mmap函數
\qquad返回值:成功時,返回創建的映射區首地址;失敗時,返回宏MAP_FAILED。
\qquad參數:
\qquad\quad第一個參數addr:建立映射區的首地址,有linux內核指定,使用時,直接傳入NULL;
\qquad\quad第二個參數length:建立的映射區的大小;
\qquad\quad第三個參數prot:映射區的權限PROT_READ,PROT_WRITE,PROT_READ|PROT_WRITE;
\qquad\quad第四個參數flags:標志位參數,MAP_SHARED:會將映射區所做的操作反映到物理設備(磁盤)上;MAP_PRIVATE:映射區所做的操作不會反映到物理設備上。
\qquad\quad第五個參數fd:用來建立映射區的文件描述符
\qquad\quad第六個參數offset:映射文件的偏移(4k的整數倍)
2.mmap的代碼舉例
#include<stdio.h> #include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> #include<stdlib.h> #include<errno.h> #include<string.h> #include<sys/mman.h> #include<unistd.h>int main() {int open_fd;open_fd = open("m.txt",O_RDWR|O_CREAT,0777);if(open_fd==-1){perror("m open fail");exit(1);}char* p = NULL;int ftruncate_fd;ftruncate_fd = ftruncate(open_fd,1024);if(ftruncate_fd==-1){perror("ftruncate fail");exit(1);}p = mmap(NULL,1024,PROT_READ|PROT_WRITE,MAP_SHARED,open_fd,0);if(p==MAP_FAILED){perror("mmap fail");exit(1);}strcpy(p,"hello world!\n");int close_mmap_fd;int close_fd;close_mmap_fd = munmap(p,1024);if(close_mmap_fd==-1){perror("close mmap fail");exit(1);}close_fd = close(open_fd);if(close_fd==-1){perror("m close fail");exit(1);}return 0; }總結
以上是生活随笔為你收集整理的linux基础知识——mmap的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读取BMP格式数据
- 下一篇: 云计算与分布式系统课程学习笔记(一)——