Ich habe eine Struktur:Wie Shared Memory (Shmget/Shmat) in C ändern?
struct sdata {
int x;
int y;
time_t time;
};
Ich schaffe für die Struktur gemeinsam genutzten Speicher wie folgt:
size_t shmsize = sizeof(struct sdata);
shmid = shmget(IPC_PRIVATE, shmsize, IPC_CREAT | 0666);
Dann greife ich auf den gemeinsam genutzten Speicher wie folgt aus:
struct sdata *data = shmat(shared.shmid, (void *) 0, 0);
data->time = time(NULL); // function returns the current time
Meine Frage ist, ziemlich einfach. Ist dies der richtige Weg, um Shared Memory zu öffnen/zu ändern? Ist das der beste Ansatz?
(I zum Synchronisation System V Semaphore verwende und ich habe nicht diesen Code enthalten. Ich wollte nur sicherstellen, dass ich Zugriff auf/korrekt auf den gemeinsamen Speicher zu ändern.)
Wenn der andere Prozess 'fork()' ed ist, dann gibt es kein Problem mit dem IPC_PRIVATE, solange der gemeinsame Speicher vor dem 'fork()' erstellt wird. Der Vorbehalt gilt jedoch im allgemeineren Fall. –