簡體   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