首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >子进程是否继承父进程的数据结构?

子进程是否继承父进程的数据结构?
EN

Stack Overflow用户
提问于 2014-03-01 21:19:49
回答 2查看 4.4K关注 0票数 4

在Linux中,如果父进程有任何数据结构(例如树、列表),这些数据结构是否由子进程继承?我的意思是,孩子是否可以访问相同的数据结构(任何指向该数据结构的指针)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-01 21:25:10

如果您说的是fork()之后的Linux/Unix进程,是的。他们得到自己的父进程数据的副本,所以在分叉被另一个进程看不到之后,不管他们做什么(这通常是通过写复制实现的,所以内存页面在写入之前不会被复制,但这是用户程序看不到的细节)。

如果您说的是Windows使用CreateProcess()启动一个新进程,则新进程不会从父进程继承任何数据结构。

与任何特定的编程语言相比,这两种语言都与您使用的操作系统有更大的关系。

票数 8
EN

Stack Overflow用户

发布于 2014-03-01 21:28:52

假设您使用像fork()这样的东西来创建子进程,它们将继承实际父进程上下文的全局所有内容:

  • 环境变量设置
  • 打开的文件描述符
  • 等。

全局作用域变量将被从实际状态复制到子进程上下文中。对这些变量的更改不会在父进程中反映。

如果希望在父进程和子进程之间进行通信,请考虑使用pipesshared memory

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22120517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档