使用mmap複製檔案

2021-09-30 05:42:40 字數 940 閱讀 7138

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 系統呼叫並不是完全為了用於共享記憶體而設計的。它本身提供了不同於一般對普通檔...