[C++/Linux] shared memory Problem
-
Hallo @all,
ich möchte ein Programm schreiben, welches über shared memory Daten mit einem anderen austauscht. (Socket möchte ich nicht veerwenden)
Folgenden Code habe ich schon.
int shID; int *data; int i; int eingabe, signal; /* Shared Memory erstellen */ shID = shmget(2404, MAXMYMEM, IPC_CREAT | 0666); if (shID >= 0) { data = shmat(shID, (void *)0, 0); // <- hier Fehler if (*data == -1) { perror("shmat failed"); } }
Ich bekomme folgende Fehlermeldung.
error: invalid conversion from ‘void*’ to ‘int*’
und zwar hier
data = shmat(shID, (void *)0, 0);
kann mir da jemand helfen? Laut meiner Literatur ist das so richtig, aber g++ gibt obigen fehler aus.
Ich danke schonmal.
Grüße
tYREL
-
Ne, das ist in C++ nicht richtig. Deine Literatur verwendet vermutlich C und ein fundamentaler Unterschied zwischen C und C++ ist, dass void* nicht mehr implizit gecastet wird.
Also einfach selbst casten.
data = static_cast<int*>(shmat(shID, 0x0, 0));
-
Super vielen Dank. Jetzt läuft es.
Vielen Dank.
tYREL