Hoi, ik nodig om in het gedeelde geheugen een lijst gemaakt met een doel van deze structuur:
Code:
typedef struct Obj{
char objname[20];
struct Obj *nextObj;
}Object
Ik heb mijn lijst gevuld met (bijvoorbeeld) 10 elementen, maar als ik probeer om hem in het gedeelde geheugen worden gelezen door een ander proces i get segmentatiefout na eerste record lezen ..
Ik heb gelezen in een andere thread (hier ->
dynamisch gedeeld geheugen ) dat malloc sone geeft problemen met gedeeld geheugen
Citaat:
|
Als u de naam malloc te creëren linked_list_header-> ptr, vervolgens het adres geretourneerd door malloc is prive aan het bellen (het proces dat vraagt malloc) proces. Hetzelfde met NODE-> buffer. U zult hebben om deze dingen in gedeeld "met de hand" zonder malloc.
|
maar ik begrijp niet wat ik moet doen en hoe op te lossen mijn probleem.
Ik heb geprobeerd om te delen object op deze manier:
Code:
Obj *head; //pointer to the head of my FILLED list
int shmid;
Obj *sh;
...
shmid = shmget(SHMKEY,(sizeof(Obj)*10),0666|IPC_CREAT|IPC_EXCL);
...
sh = (Obj *)shmat(shmid, 0, 0666);
...
*sh = *head;
Waarschijnlijk mis ik iets, of misschien ben ik totaal verkeerd ... hoe kan ik toewijzen Obj in gedeeld "met de hand" zonder malloc?
Bedankt voor uw steun, de beste groeten.