Shared Memory

19/04/2013 - 11:54 von Heinz-Mario Frühbeis | Report spam
Hallo zusammen!

Auf <http://openbook.galileocomputing.de...3.html> habe
ich was interessantes gefunden. Doch war ich gleich verwundert, weil ich
mir dachte "Machste erst mal das Programm "Two" um mal zu sehen, was
passiert, wenn Programm "One" noch gar kein Shared Memory gesetzt hat.
Aber es kommt kein Fehler<staun>.

#include <sys/ipc.h>
#include <sys/shm.h>
#define MAXMYMEM 30
int main(){
shID = shmget(2404, MAXMYMEM, IPC_CREAT | 0666);
if (shID >= 0) {
/* nun holen wir den Speicher */
myPtr = static_cast<char*>(shmat(shID, 0, 0));
if (myPtr==(char *)-1) {
//perror("shmat");
std::cout<<"SHARE IDABASE ERROR";
std::cout.flush();
} else {
/* Speicher ist zugreifbar: füllen! */
for (i=0; i<MAXMYMEM; i++) {
myPtr[i] = 'A'+i;
std::cout<<"SHARE IDABASE "<< myPtr[i];
std::cout.flush();
}
//getchar(); /* Warte mal auf eine Taste */
/* gebe den Speicher auf */
shmdt(myPtr);
}
} else { /* shmget lief schief */
std::cout<<"SHARE IDABASE ERROR 1";
std::cout.flush();
}
}

Die Ausgabe:
SHARE IDABASE A
SHARE IDABASE B
SHARE IDABASE C
SHARE IDABASE D
SHARE IDABASE E
SHARE IDABASE F
SHARE IDABASE G
SHARE IDABASE H
SHARE IDABASE I
SHARE IDABASE J
SHARE IDABASE K
SHARE IDABASE L
SHARE IDABASE M
SHARE IDABASE N
SHARE IDABASE O
SHARE IDABASE P
SHARE IDABASE Q
SHARE IDABASE R
SHARE IDABASE S
SHARE IDABASE T
SHARE IDABASE U
SHARE IDABASE V
SHARE IDABASE W
SHARE IDABASE X
SHARE IDABASE Y
SHARE IDABASE Z
SHARE IDABASE [
SHARE IDABASE \
SHARE IDABASE ]
SHARE IDABASE ^

Wie kann denn das? Wieso bekomme ich denn eine Auasgabe, wie man sie
erwartet, wenn Programm "One" einen Shared Memory-Bereich eingerichtet
hàtte?

Mit Gruß
Heinz-Mario Frühbeis
 

Lesen sie die antworten

#1 Heinz-Mario Frühbeis
19/04/2013 - 12:11 | Warnen spam
Worum es mir eigentlich geht ist:

Programm[P1] und Programm[P2] laufen jeweils im eigenen Prozess

[P1] hat ein #include zu einer dyn. Bibliothek[B1]
[P2] hat auch ein #include zu [B1]

[P1] soll eine Klasse von [B1] instanziieren und diese als Shared Memory
zugànglich machen
[P2] soll diese Klasse per Shared Memory nutzen können

Wie kriege man das hin?

Mit Gruß
Heinz-Mario Frühbeis

Ähnliche fragen