我只是在尋找一個簡單的教程/示例來使我朝正確的方向發展,但似乎找不到一個好的簡單教程。在Solaris中的父進程和子進程之間共享內存(在C中)
我找一個父母和孩子之間的教程,說明如何共享內存(不使用管道和文件,但實際內存)(用叉子)在UNIX(Solaris)上的過程中C.
我真的很感謝你的幫助,
非常感謝你,
Jary
我只是在尋找一個簡單的教程/示例來使我朝正確的方向發展,但似乎找不到一個好的簡單教程。在Solaris中的父進程和子進程之間共享內存(在C中)
我找一個父母和孩子之間的教程,說明如何共享內存(不使用管道和文件,但實際內存)(用叉子)在UNIX(Solaris)上的過程中C.
我真的很感謝你的幫助,
非常感謝你,
Jary
你必須選擇:
您可以先分配和附加共享內存,然後執行分支。
您可以分配共享內存,fork子進程,然後在兩個進程中連接到共享內存。
第一個選項可能更容易。它可能如下所示:
#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);
}
您是否嘗試過使用護目鏡?這是第一次點擊:http://www.cs.cf.ac.uk/Dave/C/node27.html – 2010-11-06 05:39:31
謝謝。我看過谷歌,但只有複雜的例子。這是我找到的最好的,但我想知道是否有人有更好的。 – Jary 2010-11-06 05:53:04
我懷疑這個例子實際上是用於Solaris的。 – Jary 2010-11-06 06:00:50