C - pamięć współdzielona - dynamiczna tablica wewnątrz wspólnej struktury
Próbuję udostępnić strukturę w ten sposób
przykład:
typedef struct {
int* a;
int b;
int c;
} ex;
między procesami problem polega na tym, że kiedy inicjuję „a” za pomocą malloc, staje się ona prywatna dla sterta procesu, który to robi (a przynajmniej tak mi się wydaje). Czy istnieje sposób na utworzenie pamięci współdzielonej (z shmget, shmat) z tą strukturą, która działa?
EDIT: Pracuję nad Linuksem.
EDIT: Mam proces, który inicjuje bufor w ten sposób:
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);
drugi proces przywiązuje się do pamięci współdzielonej w ten sposób:
key_t key = ftok("gr", 'p');
int shmid = shmget(key, sizeof(ex), 0);
ex* e;
e = (ex*)shmat(shmid, NULL, 0);
a później zdobądź element od a, w tym przypadku od pozycji 1
int i = get_el(e, 1);