我知道 execve 会丢弃任何退出的动态分配的内存。我的工作是有一个 C 程序调用二进制文件,然后使用共享缓冲区与其通信。这里的关键是效率,因为缓冲区的大小相对较小,所以我想尽可能避免使用 rpc/系统调用(如 shmat 等)。
以前,我一直在 C 程序中创建缓冲区,然后使用克隆(设置了 CLONE_VM 标志),然后是对二进制文件的 exec 调用。显然这不起作用,因为 exec 替换了图像。
我不担心设置的效率如何,我的目标是一旦设置好就拥有最有效的通信系统。
除非有人有办法在同一地址空间内执行二进制文件以便他们可以共享分配的内存区域,否则我将使用 shmget 和 shmat(从已执行的二进制文件中附加共享内存)。
有没有更有效的方法来实现共享内存?