在子级中分配内存并与父级共享

时间:2016-01-02 23:37:23

标签: c memory-management shared-memory

是否可以使用fork()与父进程共享在使用C创建的子进程中分配的内存?如果是的话,你能提供一个最小的例子吗?经过大量的搜索,我找不到任何好的例子。我只使用mmap()MAP_ANONYMOUS | MAP_SHARED共享父母与孩子之间的记忆。

1 个答案:

答案 0 :(得分:1)

这不是父母/子女的问题,而是fork()之前/之后。如果您想在分支之后设置共享内存空间,则可以在父级和子级中使用shmget() / shmat()

例如,必须在两个过程中调用它:

int shmid = shmget(0x31337, SHMSZ, IPC_CREAT | 0666)
char *shm = shmat(shmid, NULL, 0)

不可能在孩子中进行一些调用,这会使共享内存“神奇地”出现在父母中(或反过来)。