Speicherarbeit



  • Hallo.

    Ich muß an ein externes Programm Daten übergeben. Im Moment löse ich das mit Dateien. Dies dauert aber zu lange und für die Commandozeile sind es zuviele Daten.

    Könnte ich jetzt in meinem Programm Speicher reservieren, dort meine Daten hineinschreiben und das externe Programm greift auf diesen Speicher zu. Das gleiche Prinzip bei Rückgabe der Daten.
    Habe den Quellcode von beiden Programen zu Hand, kann ihn also anpassen.

    Hat jemand sowas schon mal realisiert oder sich damit beschäftigt?

    Bin für jeden Hinweis dankbar.

    Cu
    Oli



  • Hmmm... bin jetzt kein Fachmann in diesem Gebiet. Spontan (aber auch wahrscheinlich zu umständlich) würde mir die Methode einfallen eine kleine DLL zu schreiben, die den Speicherplatz, sowie die Methoden zum dort Reinschreiben und Herauslesen implementiert hat. Diese DLL dann in beiden Programmen einbinden und voilà.

    Wie gesagt, daß war jetzt mehr oder weniger ein Schuß ins Blau. Es gibt bestimmt elegantere und einfachere Methoden das zu bewerkstelligen. 👍



  • Hallo,
    ansich gibts da mehrere Möglichkeiten. Auf Anhieb fallen mir da drei ein: Eine unnamed pipe, eine named pipe oder einen shared memory. Erstere ist recht einfach zu programmieren. Die zweite ist noch einfacher :-). Die dritte erfordert schon wieder ein bisschen mehr Anstrengungen - ist dafür aber umso flexibler.
    Leider sind diese Methoden ein recht grosses Thema und man sollte schon wissen was man tut.
    Ausserdem: Falls du nicht unter nem Unix programmierst (dann wohl unter W...), kann ich dir leider nicht sagen inwieweit diese Funktionalitäten schon durch die Standardlibrary unterstützt werden 😞
    In den Hilfeseiten der Entwicklungsumgebung (oder unter Unix in den manpages) würd ich einfach mal nach den Funktionen pipe(), shmat(), shmctl() suchen. Da findest dann vielleicht auch Beispielcode.
    Hoffe das hilft dir wenigstens ein bisschen weiter. Ich kann dir schon auch Beispielcode posten - der ist aber ausschliesslich für Unixe.

    viel Erfolg,
    Brannigan



  • Hallo,
    Standard-C++ bietet keine IPC-Mittel. Welches BS verwendest du? Welchen Compiler und optional, welche Klassenbibliothek?



  • Hallo.

    Danke erstmal für die Antworten.
    Ich arbeite unter VC++6.0 und EVC4.0 mit SP1. Meine Software soll also unter Windows und unter CE laufen. JE nachdem wird es mit dem notwendigen Compiler erstellt. In der Software sind dann Verzweigungen zum BS vorhanden.

    @Sepp Brannigen: Werde mich mal in der Hilfe nach Deinen Schlagwörtern umsehen.

    @HumeSikkins: Habe unter UNIX noch nichts gemacht. Unterscheidet sich der Code so sehr oder müssen nur Befehle ersetzt werden?

    Cu
    Oli


Anmelden zum Antworten