使用 fork 后 mmap 是否会导致页面错误?

问题描述

由于 COW,linux 只会在子进程写入页面后才将其分配给子进程。它还只会在更改后为堆栈分配一个新页面。因此,例如,如果在 fork() 系统调用之后,我们在子进程中调用 printf,由于堆栈已更改,我们将出现页面错误。

但是我不确定以下代码:

fork();
char *arr = mmap(... some args.. MAP_FILED|MAP_PRIVATE);

由于父子俩都运行 mmap,我假设第二行会发生页面错误,因为我们调用了一个函数(实际上是系统调用)并创建了一个局部变量,因此更改了堆栈。这是正确的吗?

TL;博士:

我们 fork 后 mmap 是否会导致页面错误?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)