PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : gleicher Pointer (auf gleiche Addresse) in unterschiedlichen Programmen



07-03-2001, 22:22
Hallo,

Annahme: Zwei Programme, das eine schreibt Daten in einen String und wir haben einen Zeiger darauf, z.B.
char string[]="Hello World";
int *ptr;
ptr=&string[0];

Kann (bzw. darf) jetzt ein 2. Programm auf diesen String zugreifen, Wenn ich ihm den Wert von ptr (also die Addresse von string[0]) mitteile? Zumindest lesend?

Eigentlich dürfte das Linux garnicht zulassen, wenn die Pointer überhaupt zueinander "kompatibel" sind. Aber vielleicht dürfen das ja root-Programme oder root darf das erlauben?

Sion

08-03-2001, 07:06
Alle Programme haben eigene virtuelle Adressraeume, d.h. die Speicherstelle mit der Adresse x in dem einen Programm liegt ganz wo anders als die Speicherstelle mit der selben Adresse in einem anderen Programm.

Es gibt aber die Moeglichkeit spezielle gemeinsam nutzbare Speicherbloecke anzufordern.
man shmget
man mmap (mit MAP_SHARED).
Die liegen in den Adressraeumen von verschiedenen Prozessoren dann zwar auch an
verschiedenen Stellen, aber innerhalb der shared Memorybloecke kann man Zeiger benutzen.

08-03-2001, 20:57
Genau das habe ich mir auch gedacht.
Wenn das mit dem shared-memory halbwegseinfach ist, wäre das natürlich eine feine Sache! Danke.

Sion