可以一个vfork子访问父variables?

在vfork()之后,subprocess如何修改或读取父进程中的数据? 在父进程中声明的variables是否可以直接被孩子访问?

我有一个创build一些数据结构的过程。 然后我需要fork一个需要读/写这些数据结构的subprocess。 这个孩子将是一个不同于父母的执行过程。

一个进程不能直接修改别人的内存。 你通常会做的是创建一个管道或其他机制,可以跨越进程的界限。 如果使用fork(),则打开的描述符将由子进程继承。 然后它可以向父节点发送消息,指示它根据需要修改数据结构。

信息的形式可能是这个设计的难题。 您可以:

  1. 设计一个协议,该协议带有关于如何处理它们的价值和指示。
  2. 使用Google Protocol Buffers等现有编组工具。
  3. 使用远程过程调用与现有的RPC机制之一(即SUN或ONC-RPC)。

您还可以使用手动设置的共享内存方案,以允许这两个进程访问公用内存。 父进程将为其共享内存中的数据结构分配存储空间。 儿童进程会将其映射到其空间并访问这些结构。 您需要使用某种同步机制,具体取决于您如何使用数据。