gpt4 book ai didi

c - 如何在c中使用mmap

转载 作者:行者123 更新时间:2023-11-30 15:05:03 25 4
gpt4 key购买 nike

我已经搜索过,但似乎找不到如何使用 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 friend 们,你们会通过&pchFile[400]作为源,并将大小传递为 100 。用于初始化 C++ vector ,您可以将开始和结束指针传递给构造函数,例如std::vector<char> myvec(&pchFile[400], &pchFile[500]);等。通常,它要么是起始指针和长度,要么是起始指针和结束指针。

关于c - 如何在c中使用mmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40032140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com