使用mmap() 进行两文件复制,源文件为文本文件, 使用mmap进行文件映射。 目标文件为创建的一个临时文件,使用mmap映射了与源文件一样的大小。 然后两个映射区进行内存的复制,完成后,发现目标文件不是文本文件,不能使用文本编辑器打开,使用od -c查看,内容与原文件一样的,文本文件怎复制到目标文件为二进制文件了呢? 请教各位如何得到目标文件仍为文本文件,谢谢。 [ 本帖最后由 disheng727 于 2008-12-25 16:47 编辑 ]
by disheng727 - C/C++ - 2008-12-25 18:43:14 阅读(4147) 回复(7)
如题,我想把文件映射到内存后,修改数据,然后再写回文件,但是实现不了,帮忙看一下,谢了
#include "ace/Mem_Map.h"
#include
我使用mmap把文件test.txt和字符串char *str对应起来。 但在对应的过程中,在程序向字符串写数据的过程中,文件不小心被删除了,那怎么还保证str的数据不丢失呢? 或者说有没有这样的机制,让str在写入文件的时候,检测下对应的文件是否存在。不存在则新建个同名的对应文件,然后把str数据写进文件。 原来一直以为文件打开映射后,文件不能被删除,现在发现linux下可以照常删除。 我当时用的是Ace 的mmap。 希望各位大牛踊跃发言...
大小为8192(页面的整数倍)时,无法读取src+7680之后的部分,是什么原因?系统是SunOS 5.9;
dbx如:
(dbx) print src+7680
src+7680 = 0xfe221e00 "
手头上有一个网络服务, 用mmap来快速读取数据并返回, 并且在有更改请求的时候, 更新mmap文件的数据. 现在性能上有压力, 每分钟请求数到15000, 想用多进程来缓解, 大概思路是这样的: |<---shm channel---> 进程1 <-----mmap----->| netio |<---shm channel---> 进程2 <-----mmap----->| data files |<---shm channel---> 进程3 <-----mmap----->| 从netio上过来的请求分两种, 一是update数据请求, 二是r...
请教各位大虾: 小弟用mmap将一个文件映射到内存 然后修改内存的内容,在调用了msync之后没有写回文件,请问这是为什么? fd = open(SETTINF_FILE, O_CREAT|O_RDWR) start = mmap(NULL, length, PROT_WRITE, MAP_SHARED, fd, 0) close(fd); printf("mmap result = %s\n", start); write(STDOUT_FILENO, chgbuf, sizeof(chgbuf)); msync(start, length, MS_ASYNC) 谢谢了 [ 本帖最后由 luoyue625 于 2008-5-30 13:49 编辑 ]