我正在尝试共享像这个
例子的结构:
typedef struct {
int* a;
int b;
int c;
} ex;
Run Code Online (Sandbox Code Playgroud)
在进程之间,问题是当我使用malloc初始化'a'时,它变为私有的进程堆执行此操作(或者至少我认为这是发生的事情).有没有办法用这个有效的结构创建共享内存(使用shmget,shmat)?
编辑:我在Linux上工作.
编辑:我有一个初始化缓冲区的进程,如下所示:
key_t key = ftok("gr", 'p');
int mid = shmget(key, sizeof(ex), IPC_CREAT | 0666);
ex* e = NULL;
status b_status = init(&e, 8); //init gives initial values to b c and allocate space for 'a' with a malloc
e = (ex*)shmat(mid, NULL, 0);
Run Code Online (Sandbox Code Playgroud)
另一个进程将自己附加到共享内存,如下所示:
key_t key = ftok("gr", 'p');
int shmid = shmget(key, sizeof(ex), 0);
ex* e;
e = (ex*)shmat(shmid, NULL, 0);
Run Code Online (Sandbox Code Playgroud)
然后从a获取一个元素,在这种情况下,在位置1
int i …Run Code Online (Sandbox Code Playgroud)