mmap可以將相應的檔案描述的內容對映到記憶體中,讀取記憶體就相當於讀取檔案了。
下面這個例子,注意看不同的檔案使用的不同的flag。
#include
#include
#include
#include
#include
#include
#include
#include
#define file_mode (s_irusr | s_iwusr | s_irgrp | s_iroth)
#define msg "abc"
int
main(int argc, char *ar**)
if ((fdin = open(ar**[1], o_rdonly)) < 0)
if ((fdout = open(ar**[2], o_rdwr | o_creat | o_trunc, file_mode)) < 0)
if (fstat(fdin, &statbuf) < 0)
/* set size of output file */
if (lseek(fdout, statbuf.st_size - 1, seek_set) == -1)
if (write(fdout, "", 1) != 1)
if ((src = mmap(0, statbuf.st_size, prot_read , map_shared, fdin, 0)) == map_failed)
if ((dst = mmap(0, statbuf.st_size, prot_read | prot_write , map_shared , fdout, 0)) == map_failed)
memcpy(dst, src, statbuf.st_size);
exit(0);
}
使用mmap實現檔案的拷貝
mmap與munmap函式介紹 include include void mmap void start,size t length,int prot,int flag,int fd,off t offset 返回 若成功時則返回對映區域的指標,若出錯則為map failed 1 start 最好從...
檔案對映mmap
學習文獻 標頭檔案 include include 定義函式 void mmap void start,size t length,int prot,int flags,int fd,off t offsize 函式說明 mmap 用來將某個檔案內容對映到記憶體中,對該記憶體區域的訪問即是直接對該檔...
MMAP檔案對映
mmap檔案對映 mmap 系統呼叫使得程序之間通過對映同乙個普通檔案實現共享記憶體。普通檔案被對映到程序位址空間後,程序可以像訪問普通記憶體一樣對檔案進行訪問,不必再呼叫read write 等操作。注 實際上,mmap 系統呼叫並不是完全為了用於共享記憶體而設計的。它本身提供了不同於一般對普通檔...