2010-12-03 12 views
2

Also, ich bin in der ersten Stunde des Lernens C. Vielleicht werde ich heute Abend zu C++ springen.Mit C, wie kann ich auf den gleichen Speicherblock wie ein anderes C-Programm zugreifen?

Ich möchte zwei Programme Befehlszeile C erstellen, die miteinander „sprechen“ können. Der erste Gedanke, der mir in den Sinn kam, ist die Übertragung von Informationen zwischen den beiden durch Schreiben und Abfragen von Dateien. Ich stelle jedoch fest, dass C alle Methoden bietet, die ich brauche, um Speicher direkt zuzuordnen und darauf zuzugreifen, und das wäre eine viel schnellere und vernünftigere Technik.

Kann jemand ein Beispiel oder beraten?

+4

Es ist OS-spezifisch. – ruslik

Antwort

6

Was Sie fordern ist shared memory genannt. Leider ist der gemeinsame Speicher nicht Teil der C-Sprache per se, aber eine Funktion des Betriebssystems. Da Sie nicht angeben, welches Betriebssystem Sie verwenden, zeige ich Sie auf eine Unix SysV shared memory tutorial.

+1

+1. Auf Windows Shared Memory wird erreicht, indem mehr als ein Prozess dieselbe Datei im Speicher abbildet. –

+0

Danke (an alle)! Mit den richtigen Bedingungen bin ich auf dem richtigen Weg. –

3

Ich glaube, Sie beziehen sich auf ein Shared Memory Segment. Sie können auch Pipes oder Sockets verwenden, um zwischen den beiden Prozessen zu kommunizieren. Je nach Anwendung hat jeder seinen Vorteil.

Hier ist ein großer Führer auf die Kommunikation zwischen Prozessen, die den eigentlichen Gegenstand zusätzlich zu Leitungen, Steckdosen abdeckt.

http://beej.us/guide/bgipc/output/html/multipage/index.html

3

Die Technologie, die Sie in schauen müssen, ist „Shared Memory“. Es ist Betriebssystem-spezifisch und nicht in der C-Standardbibliothek.

Da Sie nicht ein Betriebssystem angegeben haben, werden Sie einige der Forschung auf eigene Faust zu tun. Wenn Sie Windows verwenden, überprüfen Sie this page.

0

Wenn Sie in einer Unix-Umgebung sind, können Sie shmget() und shmat() verwenden, um ein Shared-Memory-Segment zu erstellen und zu befestigen. Beide Prozesse bewerten das Segment über einen gemeinsamen Integer-Schlüssel.