gpt4 book ai didi

linux - vfork 子进程可以访问父变量吗?

转载 作者:太空狗 更新时间:2023-10-29 11:16:08 26 4
gpt4 key购买 nike

子进程在vfork()后如何修改或读取父进程中的数据?子进程是否可以直接访问父进程中声明的变量?

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

最佳答案

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

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

  1. 设计一个协议(protocol),其中包含值和如何处理这些值的说明。
  2. 使用现有的编码工具,例如 Google Protocol Buffers。
  3. 将远程过程调用与现有 RPC 机制之一(即 SUN 或 ONC-RPC)结合使用。

您还可以使用手动设置的共享内存方案,允许两个进程访问公共(public)内存。父进程将在该共享内存中为其数据结构分配存储空间。子进程会将其映射到它的空间并访问这些结构。根据您使用数据的方式,您需要使用某种同步机制。

关于linux - vfork 子进程可以访问父变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7346564/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com