利用mmap()写一个拷贝文件的程序
来源:互联网 发布:java easyui 编辑:程序博客网 时间:2024/05/22 14:16
#include <unistd.h>#include <assert.h>#include <sys/mman.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#include <string.h>#include <stdio.h>#include <stdlib.h>void mmapcopy(int src_fd,size_t src_len,int dst_fd);int main(int argc,char* argv[]){ if(argc!=3) { printf("Usage:%s<src_file><dst_file>\n",argv[0]); return -1; } int src_fd; int dst_fd; if((src_fd=open(argv[1],O_RDONLY))<0) { printf("file1 open failed!\n"); return -1; } if((dst_fd=open(argv[2],O_RDWR | O_CREAT | O_TRUNC,S_IRWXU ))<0) { printf("file2 open failed! \n"); return -1; } struct stat stat; //获取文件信息 fstat(src_fd,&stat); //设置文件大小 truncate(argv[2],stat.st_size); mmapcopy(src_fd,stat.st_size,dst_fd); close(src_fd); close(dst_fd); return 0;}void mmapcopy(int src_fd,size_t src_len,int dst_fd){ void* src_ptr,*dst_ptr; src_ptr=mmap(NULL,src_len,PROT_READ,MAP_PRIVATE,src_fd,0); dst_ptr=mmap(NULL,src_len,PROT_READ | PROT_WRITE,MAP_SHARED,dst_fd,0); if(dst_ptr==MAP_FAILED) { printf("mmap error:%s\n",strerror(errno)); return; } //获取文件信息 fstat(src_fd,&stat); //设置文件大小 truncate(argv[2],stat.st_size); mmapcopy(src_fd,stat.st_size,dst_fd); close(src_fd); close(dst_fd); return 0;}void mmapcopy(int src_fd,size_t src_len,int dst_fd){ void* src_ptr,*dst_ptr; src_ptr=mmap(NULL,src_len,PROT_READ,MAP_PRIVATE,src_fd,0); dst_ptr=mmap(NULL,src_len,PROT_READ | PROT_WRITE,MAP_SHARED,dst_fd,0); if(dst_ptr==MAP_FAILED) { printf("mmap error:%s\n",strerror(errno)); return; } memcpy(dst_ptr,src_ptr,src_len); munmap(src_ptr,src_len); munmap(dst_ptr,src_len);}
结果
阅读全文
0 0
- 利用mmap()写一个拷贝文件的程序
- 利用mmap实现文件拷贝
- I/O(五)写一个程序做一个文件的拷贝
- 使用mmap实现文件的拷贝
- mmap拷贝文件
- 一个经典的文件拷贝程序
- 一个java写的文件查看程序
- 利用文件锁保证一个程序最多只有一份拷贝在运行
- 利用java反射机制写的一个实体类属性拷贝的工具
- 利用Libev写一个简单的client和server程序
- 利用caffe训练的模型,写一个测试程序
- 利用纯汇编写一个WIN32的窗口程序
- 利用Apache的相应jar包,写一个解压zip的程序,涉及到解压zip,读取excel文件
- mmap多进程拷贝大文件
- 用来拷贝文件的程序
- 利用C语言文件读写做的一个文件拷贝功能
- sendfile(零拷贝技术)写的一个简单的服务器程序
- 利用生产者(读)消费者(写)模型拷贝大文件
- HTML CSS
- 关于为何jstl渲染的数据应存放在request内
- javascript 原型(prototype)
- input type="checkbox"
- 解决php7+nginx+yaf访问出现404问题
- 利用mmap()写一个拷贝文件的程序
- 设计模式-策略模式
- Selenium启动Chrome时配置选项
- javascript的一些运算符
- 【复习】NOIP2017提高组-背板开始
- NPOI 读公式生成的单元格数据为0
- CSS
- 贷款超市的“大秘密”:月利润上千万,APP为主战场
- Java注释@interface的用法【转】