• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Shared memory Adresse wechselt

nikosch

Newbie
hi,

das Verhalten meines Programmes mit shared memory irritiert mich:

Ich habe 2 Programme,
Prog1
- erzeugt ein shared memory und schreibt Daten rein
- erzeugt eine Datei, shm-info, die u.a. den shared memory ID enthält

Prog2
- wartet, bis die Datei, shm-info, erstellt ist
- liest den shared memory ID, sim_shm_id, daraus
- verbindet sich mit
Code:
sim_shm_ptr = (unsigned char *) shmat(sim_shm_id, 0, SHM_RND)
- liest die Daten daraus mit Setzen eines Pointers
Code:
pCtrl = (CTRL_TYPE *)  (sim_shm_ptr + offset)
- löst die Verbindung mit
Code:
shmdt(sim_shm_ptr)

Das funktioniert soweit (der Zugriff über den Typ CTRL_TYPE ist ok so).

Was mich irritiert, ist nun, dass nach Beenden von Prog2 und Neustart (Prog1 läuft weiter) die Adresse, sim_shm_ptr, jedesmal einen anderen Wert hat. Dennoch sieht Prog2 über den Pointer pCtrl die richtigen Daten.
Wie kann denn mit ständig wechselnden Adressen immer der gleiche (und auch noch richtige) Inhalt ankommen?
Ist die Adresse, sim_shm_ptr, evtl. eine für Prog2 relative Adresse und ändert sich, weil Prog2 nach jedem erneuten Start an einer anderen Stelle im Speicher liegt?

Mich irritieren auch funktionierende Programme, wenn ich nicht verstehe, warum sie funktionieren :???:

Kann mich Neuling in Systemprogrammierung jemand erlösen? Danke schon mal
 
Oben