Hi, ich brauche, um in den gemeinsamen Speicher eine Liste, die mit Gegenstand dieser Struktur:
Code:
typedef struct Obj{
char objname[20];
struct Obj *nextObj;
}Object
Ich habe meine Liste gefüllt mit (zB) 10 Elemente, aber wenn ich versuche, es in den gemeinsamen Speicher zu lesen von einem anderen Prozess ich Segmentation Fault nach dem ersten Eintrag lesen ..
Ich habe gelesen, in einem anderen Thread (hier ->
Dynamic Shared Memory ), dass malloc gibt sone Probleme mit Shared-Memory
Zitat:
|
Wenn Sie forderte malloc zu schaffen linked_list_header-> ptr, dann wieder die Adresse von malloc ist privat an die aufrufende (der Prozess, fordert malloc) Prozess. Diese mit NODE-> Puffer. Sie haben, um diese Dinge in einer "von Hand", ohne malloc.
|
aber ich verstehe nicht, was ich zu tun habe und jetzt, wie man mein Problem lösen.
Ich habe versucht zu Objekt auf diese Weise:
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;
wahrscheinlich vermisse ich etwas, oder vielleicht bin ich völlig falsch ... wie kann ich das Ziel in der gemeinsamen Zuteilung "von Hand", ohne malloc?
Vielen Dank für Ihre Unterstützung, den besten Grüßen.