摘要: mmap可以把磁盘文件的一部分直接映射到内存,这样文件中的位置直接就有对应的内存地址,对文件的读写可以直接用指针来做而不需要read/write函数。原型:#include void *mmap(void *addr, size_t len, int prot, int flag, int filedes, off_t off);int munmap(void *addr, size_t len); 参数解释如下:整体相当于磁盘文件的对应长度搬移到内存中。如果addr参数为NULL,内核会自己在进程地址空间中选择合适的地址建立映射。如果addr不是NULL,则给内核一个提示,应该从... 阅读全文
posted @ 2012-05-09 01:42 qimi 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 如何重命名一个文件?如果需要对一个文件进行复制和删除,那么最快的方法是重命名一个文件。所需要时间就在一个cpu周期里面,是原子操作。比如,做一个登入登出日志文件管理系统,你需要统计每天的日志文件信息,这时候,你需要复制系统日志文件wtmpx,但是如果你一条数据一条数据或者一个字节一个字节的复制副本,效率会很低,而且这时候可能还有用户登入或者登出系统,需要用到日志文件记录,而这时候由于你又在使用这个日志文件,会照成冲突。这时候是不能用文件锁解决问题的。因为使用日志文件的是系统,你不能跟内核协商使用锁的协议。最好的办法,重命名这个日志文件。#include<stdio.h>#inclu 阅读全文
posted @ 2012-05-09 01:06 qimi 阅读(714) 评论(0) 推荐(0) 编辑