我在
代码中使用fork.在fork
调用我的
代码之前,父进程有一个声明的
全局变量.所以在fork
调用之后,子进程在其自己的线程栈上
获取全局变量的单独副本,或共享现有的
全局变量的父实例.所以我想这里有三种可能性
1)子进程
获取在父进程中声明的
全局变量的单独实例
2)子进程与父线程共享
全局变量. (这可能不是真的)
3)子进程没有任何关于父线程中
全局变量的信息
如果2或3选项为真,我想知道是否有任何方法获取全局变量,并且在子进程中在父线程中声明其“执行fork()时的状态/值”).
所以广泛地说,是否有任何方式访问父进程变量,并且在使用fork()创建的子进程中有一些状态.
每个进程都有自己的内存空间.进程通常不能访问另一进程的内存.
在fork的情况下,子进程的内存空间作为父进程的精确副本启动.这包括变量,代码等.将其中任何一个更改为不会改变另一个中的任何类似变量.
所以这是答案#1.
即使可以,你应该问的问题不是“我如何分享变量?”但“如何交换数据?”.拥有受控通道不容易出错,因为它提供了更宽松的耦合和更小的距离动作.
管道通常用于在父母和孩子之间进行沟通,但还有许多其他选项.