使用mmap(linux系统调用)追加文件内容

在网上找了一些例子,都实践了一遍,但是这些例子都是读取文件,或者将文件中的字符串“asdf”改为“qwer”这种,我想要的功能是在文件末尾增加一行新的内容,就是普通的wr... 在网上找了一些例子,都实践了一遍,但是这些例子都是读取文件,或者将文件中的字符串“asdf”改为“qwer”这种,我想要的功能是在文件末尾增加一行新的内容,就是普通的write进去,求方法。我自己根据mmap文档中的参数说明,尝试了若干次都失败了。
源码如上图,创建一个文件“mmapfile.txt”,往里面追加一句话“just a test for mmap.”
下一次再执行这个程序,mmapfile.txt文件中之前的内容不被删除,而是”追加“。
展开
 我来答
oowood
推荐于2016-06-03 · TA获得超过1781个赞
知道大有可为答主
回答量:2196
采纳率:81%
帮助的人:1236万
展开全部
mmap 是做内存映射,mmap系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进程可以像访问普通内存一样对文件进行访问,不必再调用read(),write()等操作。
void * mmap(void *start, size_t length, int prot , int flags, int fd, off_t
offset);
PROT_WRITE //页可以被写入 //这个参数你设置没有?
追问

源码如上图

励琛利0Iz
2014-11-12 · TA获得超过435个赞
知道小有建树答主
回答量:406
采纳率:0%
帮助的人:221万
展开全部
如果你想体验Linux系统,我觉得最好的办法是安装了Linux操作系统,再好的园林绿化,仿真工具不能让你真正体验到了Linux的真正威力。一般可以安装Vista系统的配置非常高,可以安装虚拟机软件的Windows平台,虚拟机内安装了Linux系统。在这种情况下,有一个完整的Linux系统(带独立的桌面环境,文件系统,内存空间等,和一台电脑没有区别),而要像在Windows下运行的Windows应用程序,不会将您的Windows产生任何危害。
常见的虚拟机软件Vmware的,现在最新的版本是6.0,很不错,推荐,以及微软的VirtualPC,功能也很不错,但我还没有用完。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无名无几
2019-08-16 · TA获得超过227个赞
知道小有建树答主
回答量:127
采纳率:0%
帮助的人:51.5万
展开全部
图代码用了lseek(reposition read/write file offset),这个并不能改变文件的大小,所以追加失败。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yexicheng
2014-11-12 · TA获得超过1.2万个赞
知道大有可为答主
回答量:8857
采纳率:69%
帮助的人:7064万
展开全部
最简单的办法是:
echo "文件内容“ >> 文件
更多追问追答
追问
我必须用mmap这个方法
追答
网上查mmap是用来内存映射的?你确定用这个来修改文件?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式