摘要:
mmap的好处:和read、write系统调用相比不会产生无关的副本;如果不出错就不会有系统调用、操作环境切换等开销;不再需要lseek调用。mmap的坏处:内存映射总是PAGESIZE的整数倍,会浪费一定的内存;如果要映射的内容非常大的时候可能找不到连续的线性地址空间;创建并维护内核相关数据结构,这部分可能抵消双重副本节省下的开销,尤其是大型频繁访问的文件。下面是一个文件映射比较全面的例子:int main(){ //取得页大小 //int pagesize = sysconf(_SC_PAGESIZE); int pagesize = getpagesize(); ... 阅读全文
摘要:
epoll使得时间监听器的注册与实际的事件监视工作脱钩,有三种系统调用:初始化epoll的上下文;将要查看的文件描述符加入上下文(或移除);实际执行时间等待。#include <stdio.h>#include <fcntl.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/uio.h>#include <sys/epoll.h>#include <m 阅读全文
摘要:
include <stdio.h>#include <fcntl.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/uio.h>int main(){ int fd = open("test", O_RDWR); char *buf[] = {"abcdefg\n", "abcdefgh\n", "a 阅读全文