如何在Perl中使用fork时,在子进程和父进程之间共享变量

前端之家收集整理的这篇文章主要介绍了如何在Perl中使用fork时,在子进程和父进程之间共享变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在代码中使用fork.在fork调用我的代码之前,父进程有一个声明的全局变量.所以在fork调用之后,子进程在其自己的线程栈上获取全局变量的单独副本,或共享现有的全局变量的父实例.所以我想这里有三种可能性
1)子进程获取在父进程中声明的全局变量的单独实例
2)子进程与父线程共享全局变量. (这可能不是真的)
3)子进程没有任何关于父线程中全局变量的信息

如果2或3选项为真,我想知道是否有任何方法获取全局变量,并且在子进程中在父线程中声明其“执行fork()时的状态/值”).

所以广泛地说,是否有任何方式访问父进程变量,并且在使用fork()创建的子进程中有一些状态.

解决方法

每个进程都有自己的内存空间.进程通常不能访问另一进程的内存.

在fork的情况下,子进程的内存空间作为父进程的精确副本启动.这包括变量,代码等.将其中任何一个更改为不会改变另一个中的任何类似变量.

所以这是答案#1.

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

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

猜你在找的Perl相关文章