我只是在寻找一个简单的教程/示例,让我朝着正确的方向前进,我似乎无法找到一个简单的方法。
我正在寻找一个教程,解释如何在C中的UNIX(Solaris)中的父级和子级(使用fork)进程之间共享内存(不使用管道和文件,但实际内存)。
我非常感谢你的帮助,
非常感谢,
Jary
答案 0 :(得分:2)
你必须选择:
您可以先分配和附加共享内存,然后再进行分叉。
您可以分配共享内存,分叉子进程,然后在两个进程中附加到共享内存。
第一种选择可能更容易。它可能如下所示:
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
....
int size = 32000;
/* allocate and attach shared memory */
int shmID = shmget(IPC_PRIVATE, size, 0600);
void* shmPtr = shmat(shmId, NULL, 0);
/* fork child process */
pid_t pID = fork();
if (pID == 0)
{
/* child */
... do something with shmPtr ...
/* detach shared memory */
shmdt(shmPtr);
}
else
{
/* parent */
... do something with shmPtr ...
/* detach shared memory */
shmdt(shmPtr);
}