c – 使用fork时如何映射内存?
发布时间:2020-05-23 14:44:39 所属栏目:Linux 来源:互联网
导读:我是“fork()”的新手,我随处读到,当调用fork()时,启动当前(调用)进程的精确副本.现在,当我运行以下代码时,应该有两个不同的进程,有两个不同的分配给其变量和函数的内存位置.#includestdio.h int i=10; int pid; int main(){ if((pid=fork())==0){ i++;/
|
我是“fork()”的新手,我随处读到,当调用fork()时,启动当前(调用)进程的精确副本.现在,当我运行以下代码时,应该有两个不同的进程,有两个不同的分配给其变量和函数的内存位置.
Why The output looks like:: child address::804a01c parent address::804a01c 为什么父母和孩子的地址都是一样的? 最佳答案
不; Linux实现了virtual memory,这意味着每个进程都有自己的完整地址空间.因此,在fork之后,两个进程都会看到内存对象副本的相同地址. (顺便说一下:VM还会导致代码在物理内存中的进程之间共享,并且所有数据都只是copied-on-write.) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
