子进程如何在vfork()之后修改或读取父进程中的数据? 父进程中声明的变量是否可供子进程直接访问?
我有一个创建一些数据结构的过程。然后我需要fork一个子进程 需要读/写这些数据结构。孩子将是一个与父母不同的执行过程。
答案 0 :(得分:2)
一个进程无法直接修改另一个进程的内存。您通常要做的是创建一个可以跨越流程边界的管道或其他机制。如果使用fork(),则子进程将继承开放描述符。然后,它可以向父级发送消息,指示它根据需要修改数据结构。
消息的形式可能是此设计的难点部分。你可以:
您还可以使用手动设置共享内存方案,允许两个进程访问公共内存。父进程将为其共享内存中的数据结构分配存储空间。子进程也会将其映射到其空间并访问这些结构。根据您使用数据的方式,您需要使用某种同步机制。