C - Shared Memory - Dynamisches Array innerhalb einer Shared Struct
Ich versuche, eine Struktur wie diese zu teilen
Beispiel:
typedef struct {
int* a;
int b;
int c;
} ex;
zwischen den prozessen besteht das problem darin, dass wenn ich 'a' mit einem malloc initialisiere, es für den haufen des prozesses, der dies tut, privat wird (oder zumindest denke ich, dass dies passiert). Gibt es eine Möglichkeit, mit dieser funktionierenden Struktur einen gemeinsamen Speicher (mit shmget, shmat) zu erstellen?
EDIT: Ich arbeite an Linux.
EDIT: Ich habe einen Prozess, der den Puffer wie folgt initialisiert:
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);
Der andere Prozess hängt sich wie folgt an den gemeinsamen Speicher an:
key_t key = ftok("gr", 'p');
int shmid = shmget(key, sizeof(ex), 0);
ex* e;
e = (ex*)shmat(shmid, NULL, 0);
und später ein Element von a erhalten, in diesem Fall das in Position 1
int i = get_el(e, 1);