当我在Perl中分叉进程时,子进程可以查看其父进程的数据

时间:2015-09-03 18:22:53

标签: perl fork

假设我正在构建一个webcrawler并且我有一个包含所有访问过的URL的哈希。

当我分叉子进程时,我希望能够从子进程访问被访问URL的哈希值,但我不想复制哈希值,因为它很大并且会耗尽计算机的内存。

当我使用Parallel :: ForkManager进行fork时,我打印了父进程中声明的哈希的地址,当我从父进程和子进程打印时,我得到相同的地址,例如HASH(0x7fc59d017f38)

但我想确保数据结构没有被复制到子进程

1 个答案:

答案 0 :(得分:8)

没有。每个进程都有自己的地址空间。孩子的地址空间以其父母的副本开头,但是改变其中一个对另一个没有影响。您需要使用各种可能的通信通道(管道,memcached,数据库,文件等)之一显式交换您想要“共享”的数据。