如何在Perl中使用fork时,在子进程和父进程之间共享变量
发布时间:2020-12-15 22:04:23 所属栏目:大数据 来源:网络整理
导读:我在代码中使用fork.在fork调用我的代码之前,父进程有一个声明的全局变量.所以在fork调用之后,子进程在其自己的线程栈上获取全局变量的单独副本,或共享现有的全局变量的父实例.所以我想这里有三种可能性 1)子进程获取在父进程中声明的全局变量的单独实例 2)
我在代码中使用fork.在fork调用我的代码之前,父进程有一个声明的全局变量.所以在fork调用之后,子进程在其自己的线程栈上获取全局变量的单独副本,或共享现有的全局变量的父实例.所以我想这里有三种可能性
1)子进程获取在父进程中声明的全局变量的单独实例 2)子进程与父线程共享全局变量. (这可能不是真的) 3)子进程没有任何关于父线程中全局变量的信息 如果2或3选项为真,我想知道是否有任何方法获取全局变量,并且在子进程中在父线程中声明其“执行fork()时的状态/值”). 所以广泛地说,是否有任何方式访问父进程变量,并且在使用fork()创建的子进程中有一些状态. 解决方法
每个进程都有自己的内存空间.进程通常不能访问另一进程的内存.
在fork的情况下,子进程的内存空间作为父进程的精确副本启动.这包括变量,代码等.将其中任何一个更改为不会改变另一个中的任何类似变量. 所以这是答案#1. 即使可以,你应该问的问题不是“我如何分享变量?”但“如何交换数据?”.拥有受控通道不容易出错,因为它提供了更宽松的耦合和更小的距离动作. 管道通常用于在父母和孩子之间进行沟通,但还有许多其他选项. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |