fork 父子进程变量之间的关系

来源:互联网 发布:汇讯通软件 编辑:程序博客网 时间:2024/04/24 15:30

       调用fork,会有两次返回,一次是父进程、一次是子进程,因为子进程是父进程的副本,所以它拥有父进程数据空间、栈和堆的副本,它们并没有共享这些存储空间,它们只共享正文段。 我们通过下面的程序验证下。

 

程序的输出:

This is the child process!
20415, 7, 11
This is the parent process! child processid=20415
20414, 6, 10

 

可以看出,子进程的值发生了改变,可以说明,它们并不是共享的。

 

 

我把变量的地址打出来,输出如下:

This is the child process!
20505, 7, 11, 646334744
This is the parent process! child processid=20505
20504, 6, 10, 646334744

 

地址居然是一样的,内容还是不一样,原来这里打印的变量的地址都是逻辑空间, 对于父子进程,它们的逻辑空间一样,但是物理空间还是不同的。所以在多进程编程中,不要寄希望于通过地址来判断两个变量是否相同。

 

 

 

 

 

原创粉丝点击