Gast
#1969494
Hallo,
ich programmiere mit C unter Linux(Suse 11.1,64bit).
Ich wollte einen bzw. mehrer Shared Mamory Bereiche erstellen die
grösser als 340 000 byte sind.
Dazu Habe ich ein Testprogramm gefunden und ausprobiert. Das
testprogramm läuft auch soweit so gut bis man MAXMYMEM auf 340000 setzt.
Aus irgend einen Grund wird kein gemeinsamer Speicher angelegt. Mir
gehen die Ideen aus. kann es sein dass was compilieren falsch läuft??
oder die hardware es nicht mitmacht?
hier der beispilcode:
#define MAXMYMEM 30 <-- sobald 340000, shmget: Invalid argument
int main(int argc, char **argv)
{
int shID;
char *myPtr;
int i;
/* Shared Memory erzeugen */
shID = shmget(2404, MAXMYMEM, IPC_CREAT | 0666);
if (shID >= 0) {
/* nun holen wir den Speicher */
myPtr = shmat(shID, 0, 0);
if (myPtr==(char *)-1) {
perror("shmat");
} else {
/* Speicher ist zugreifbar: füllen! */
for (i=0; i<MAXMYMEM; i++) {
myPtr[i] = 'A'+i;
}
getchar(); /* Warte mal auf eine Taste */
/* gebe den Speicher auf */
shmdt(myPtr);
}
} else { /* shmget lief schief */
perror("shmget");
}
}