2017-01-29 3 views
-1

Ich habe 4 Programme main.c, delete.c, insert.c und search.c. Was sie tun sollen, ist Löschen, Einfügen und Suchen einer Linkliste, die in main.c erstellt wurde. Ich rufe jedes Programm von main.c. Das Problem ist teilen Sie die Linkliste unter allen vier und führen Sie nicht synchronisierte Vorgänge auf der Liste. Welchen Ansatz muss ich verfolgen, um die Liste zu teilen?Datenstruktur unter mehreren Programmen teilen

Hinweis: Jeder hat seine eigene Hauptfunktion.

+1

Haben Sie wirklich 4 Programme? Weil ich 4 Quelldateien sehe, die in einem Projekt/Programm kompiliert werden können. – Alex

+0

Es gibt viele Möglichkeiten, [* interprocess communication *] (https://en.wikipedia.org/wiki/Inter-process_communication) zu machen. –

+0

@Alex hat jeweils eine eigene Hauptfunktion. –

Antwort

0

Eine Möglichkeit ist die Verwendung von gemeinsamem Speicher unter Prozessen.

int shmid = shmget(1234, 1024, IPC_CREAT | 0666); //for one of the programs 
int shmid = shmget(1234, 1024, 0666); //for remaining of the programs 
void * memptr = shmat(shmid, NULL, 0); 
char *ptr = memptr; 
//ptr is now a character array of 1024 bytes 
//you can use this memory for creating your data structures 

1234 der Schlüssel für Speicherplatz ist, können Sie einen beliebigen Wert int verwenden, aber der Wert sollte in allen Programmen gleich sein, die diesen Raum zugreifen. 1024 ist die erforderliche Speichergröße.

P.S. Ich habe keine Fehlerprüfung durchgeführt, um den Code einfach zu halten. Weitere Informationen finden Sie unter man-Seiten von shmget und shmat.

Verwandte Themen