首页 > 解决方案 > mmap 如何处理矛盾的论点?

问题描述

我是C新手,只是一个关于函数用法的问题mmap,函数原型mmap

void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);

我看到了这样的代码:

char *srcp = mmap(0, filesize, PROT_READ, MAP_PRIVATE, srcfd, 0);

我们知道这PROT_READ意味着该区域的虚拟页面可以只读。并MAP_PRIVATE表明它是一个私有的写时复制对象。写时复制技术就像,当两个进程使用同一个对象时,当进程A修改对象时,这些更改只属于进程A,对进程B不可见。所以MAP_PRIVATE允许用户写sth,但PROT_READ表示只读,他们不是互相矛盾吗?

标签: clinuxvirtual-memory

解决方案


推荐阅读