[solved] Mit Strukturen als Rückgabewert weiterarbeiten
-
Hallo,
ich habe 2 C-programme, von denen das eine das andere aufruft.
Programm 1 gibt in der main-Methode eine Struktur zurück.
Programm 2 ruft nun Programm 1 so auf:int main(void) { char *filename = "C:\\Programm1.exe"; struct returnvalue file; system(filename); printf("%s",file.location); return 0; }
returnvalue ist meine Struktur, die ich in Programm 1 und Programm 2 angelegt habe. (Muss ich sie überhaupt in Programm 2 nochmal anlegen?)
Das Programm öffnet sich, aber nun möchte ich mit der Struktur, die Programm 1 zurückgibt weiterarbeiten, z.B. sie in Programm 2 durch printf ausgeben. Wie speichere ich nun diese Rückgabestruktur in meiner Struktur file,sodass ich file.location ausgeben kann?
Mit file=system(filename) funktioniert es auch nicht, da ich dann die Meldung bekomme, das es zwei verschiedene Typen sind.
Ich hoffe ihr könnt mir helfen
-
Das geht so nicht. Mit system() kannst du nur int-Werte hin- und herreichen. Was du brauchst sind Methoden zur Interprozesskommunikation. Dein Betriebssystem wird Mittel dafür anbieten. Wenn's ganz billig nur mit Standardmitteln sein soll, kannst du auch über eine Datei kommunizieren.
-
Das geht nicht.
Was aber geht: die Infos in eine Datei speichern. Das 1. Programm liest dann den Inhalt dieser Datei.
Du kannst aber auch eine Pipe oder ähnliches machen. Das ist dann aber nicht mehr ANSI C. Dann mußt Du dich schon in das Unterforum bewegen, das zu Deinem OS gehört.
mfg Martin
-
Gut, danke für die schnellen Antworten.
SeppJ schrieb:
Wenn's ganz billig nur mit Standardmitteln sein soll, kannst du auch über eine Datei kommunizieren.
Ja, dann werde ich das wohl machen, da es bei mir nur um mehrere Strings geht, die ich benutzen möchte. Dann spare ich mir auch das ganze Strukturen hin und her.
Danke nochmal