2
是否可以通過目標文件的mmaped區域將源文件進行mmap映射以將源複製到目標?我已經嘗試了簡單的實現(下圖),但它不工作..使用mmap複製文件
int main(int argc, char *argv[])
{
struct stat ss;
int src = open(argv[1], O_RDONLY);
fstat(src, &ss);
int dest = open(argv[2], O_RDWR | O_CREAT | O_TRUNC, ss.st_mode);
void *dest_addr = mmap(NULL, ss.st_size, PROT_WRITE, MAP_SHARED, dest, 0);
printf("dest is: %x\n", dest_addr);
void *src_addr = mmap(dest_addr, ss.st_size, PROT_READ, MAP_PRIVATE | MAP_FIXED, src, 0);
printf("src is: %x\n", src_addr);
if (munmap(dest_addr, ss.st_size))
printf("munmap failed");
if (munmap(src_addr, ss.st_size))
printf("munmap failed");
}
上述映射源「在」目的地MMAP,但是這並不能使其一路下跌到實際的文件作爲希望。我只是天真嗎?