在Linux中,如果父进程有任何数据结构(例如树,列表),那么这些数据结构是否由子进程继承?我的意思是,孩子是否可以访问相同的数据结构(任何指向该数据结构的指针)?
答案 0 :(得分:5)
如果您在fork()
之后谈论Linux / Unix进程,是的。他们获得了自己父进程数据的副本,因此在fork之后没有其他人看到它们(通常是通过copy-on-write实现的,所以内存页面不会被复制,直到写入,但这是用户程序没有看到的细节。)
如果您正在谈论Windows使用CreateProcess()
启动新进程,否则新进程不会从父进程继承任何数据结构。
与使用任何特定的编程语言相比,这两者与您使用的操作系统有更多关系。
答案 1 :(得分:3)
假设您使用fork()
之类的东西来创建子进程,它们将继承实际父进程上下文的全局内容:
全局范围变量将从其实际状态复制到子进程上下文。对这些变量的更改不会反映在父进程中。
如果您想在父进程和子进程之间进行通信,请考虑使用pipes或shared memory。