加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在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.

即使可以,你应该问的问题不是“我如何分享变量?”但“如何交换数据?”.拥有受控通道不容易出错,因为它提供了更宽松的耦合和更小的距离动作.

管道通常用于在父母和孩子之间进行沟通,但还有许多其他选项.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读