在Linux中,如果父进程有任何数据结构(例如树、列表),这些数据结构是否由子进程继承?我的意思是,孩子是否可以访问相同的数据结构(任何指向该数据结构的指针)?
发布于 2014-03-01 21:25:10
如果您说的是fork()之后的Linux/Unix进程,是的。他们得到自己的父进程数据的副本,所以在分叉被另一个进程看不到之后,不管他们做什么(这通常是通过写复制实现的,所以内存页面在写入之前不会被复制,但这是用户程序看不到的细节)。
如果您说的是Windows使用CreateProcess()启动一个新进程,则新进程不会从父进程继承任何数据结构。
与任何特定的编程语言相比,这两种语言都与您使用的操作系统有更大的关系。
发布于 2014-03-01 21:28:52
假设您使用像fork()这样的东西来创建子进程,它们将继承实际父进程上下文的全局所有内容:
全局作用域变量将被从实际状态复制到子进程上下文中。对这些变量的更改不会在父进程中反映。
如果希望在父进程和子进程之间进行通信,请考虑使用pipes或shared memory。
https://stackoverflow.com/questions/22120517
复制相似问题