繁体   English   中英

如何在C中使用mmap

[英]How to use mmap in c

我已经搜索过,但似乎找不到如何使用mmap的方法。 这就是我所拥有的..

char *pchFile;
if ((pchFile = (char *) mmap (NULL, fileSize, PROT_READ, MAP_SHARED, fd, 0)) == (char *) -1){
    fprintf(stderr, "Mmap Err: \n");
    exit (1);
}

那么,如何从获取pchFile中读取文件? pchFile是从mmap映射的字节数组吗? 如何读取偏移量,例如400字节? 我可以有一个偏移量并且仅读取一定量的内容,例如仅读取100个字节吗?

pchFile只是一个普通的旧char * (可访问fileSize有效字节)。 因此,如果您希望以400字节的偏移量指向数据的指针,则可以仅使用&pchFile[400]pchFile + 400进行隐式或显式指针算术运算。

如何将其限制为100个字节取决于您使用的API。 C本身没有指针“长度”的概念(存在用于NUL终止的字符串的API,但是原始文件数据不太可能在有用的位置包含NUL)。 对于memcpy / memcmp和朋友,您将传递&pchFile[400]作为源,并将大小传递为100 为了初始化C ++ vector ,您需要将起始和结束指针传递给构造函数,例如std::vector<char> myvec(&pchFile[400], &pchFile[500]); 等等。通常,它要么是开始指针和长度,要么是开始指针和结束指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM