Ich habe eine Struktur wie
struct board{
char name;
int values[37];
}board
Stellen Sie sich ein Spiel vor, bei dem mehrere Spieler an einem einzigen Tisch spielen und alle auf verschiedene Positionen des Wertefeldes setzen, wobei der Name des Brettes eindeutig ist und ein Spieler ein Spiel unter Angabe des Bretternamens beginnt. Wenn 2 oder mehr Spieler denselben Brettnamen eingeben, nehmen sie alle an demselben Spiel teil.
Ich muss diese Struktur im gemeinsamen Speicher ablegen und auf den Inhalt von "values" zugreifen bzw. diesen ändern.
von verschiedenen Prozessen zur gleichen Zeit (Semaphoren sind kein Problem). Es ist mir gelungen, die Struktur in ein Stück gemeinsamen Speicher zu kopieren, aber ich weiß nicht, wie ich auf den Namen zugreifen kann, um zu sehen, ob eine Karte bereits vorhanden ist und solche Dinge.
Dies ist für ein Schulprojekt und ich bin ein wenig verzweifelt.... bitte helfen und danke. Übrigens, der gemeinsame Speicher, den ich möchte, verweist auf das POSIX-Betriebssystem
0 Stimmen
So etwas wie "Shared Memory" gibt es in C nicht. Wenn Sie sich auf ein plattformspezifisches Konzept beziehen, geben Sie bitte die Plattform explizit an (z.B. "dies ist für meinen TI-95-Rechner").
0 Stimmen
Zunächst einmal besteht der Name nur aus einem einzigen Zeichen. Er sollte entweder ein Zeiger oder ein Array sein. Und warum kopieren Sie nicht die gesamte Struktur in den gemeinsamen Speicher? Dann können Sie auf sie wie auf jede andere Struktur zugreifen. Außerdem, warum gemeinsamer Speicher? Startet jeder Spieler sein eigenes Programm auf dem Computer, oder stellen sie eine Verbindung über ein Netzwerk her?
0 Stimmen
Unterstützt Ihre shm-Bibliothek keine benannten Speicherbereiche? Wenn ja, können Sie jede Karte einer Speicherregion zuordnen. Entweder das, oder Sie verwenden einen rot-schwarzen Baum, um die
(name, (struct board *))
Paare. Meinten Sie außerdemchar *name
? (Eine feste Größechar
array ist besser für shm, weil es einfacher ist, die Zeiger zu kopieren und zu verwenden.