Main Rückgabewert verwenden
-
Hallo,
Ich möchte 2 C Programme schreiben.
Programm A und Programm B.Wobei A das Main Programm ist und B mit Parameter aufruft.
B soll nun mit den Parameter etwas ausrechen und das Ergebnis an A zurückgeben.So meine Fragen sind:
Wie kann ich von Programm B einen Wert an A liefern?
Ich dachte mir den return Wert von der Main Funktion von B, aber wie bekomme ich den im Programm A?Kann mir wer weiterhelfen?
-
Das hängt vom Betriebsystem ab. Unter DOS gibt's beispielsweise eine U-Variable ERRORLEVEL, die den letzten Exit-Wert speichert. Ich hatte auch (auf Windows) schon den Fall, daß man exit() statt einem bloßen return verwenden musste, um das hinzukriegen.
Vom Standpunkt der Architektur aus gesehen, ist es vielleicht besser beide Programme zusammenzulinken (kann ich nicht wissen -- musst du entscheiden).
-
Hallo,
habs grad hinbekommen, wie ich den return wert der main vom anderen programm bekomme
#include <windows.h>
#include <stdio.h>int main()
{
printf("%d",system("D:\\Programmieren\\C\\test\\Debug\\mein.exe"));
}total super

-
Wenn du die beiden Programme in ihren Quellen verfügbar hast, könntest du auch direkt B aus A aufrufen.
// datei mit "echter" main() #include <stdio.h> int pseudo_main ( int, char ** ); int main ( int argc, char **argv ) { printf ( "pseudo_main hat %d zurueckgegeben\n", pseudo_main (argc, argv) ); return 0; }// datei mit "pseudo" main() #include <stdio.h> int pseudo_main ( int argc, char **argv ) { for ( int i=0; i<argc; i++ ) { puts ( argv[i] ); } return argc; }Die notwendigen Änderungen sind marginal und mit Einsatz des Präprozessors sicher auch flexibel umschaltbar.
-
Das geht, ja. Es gibt immer bessere Möglichkeiten als system(), wirf einmal die Suche an. Zum Herumprobieren ist das aber egal.
Besser wäre es, die System-eigenen Funktionen zu verwenden, um einen Kindprozess direkt (und nicht über eine Shell) zu erzeugen. Da hat man dann auch mehr Einfluss auf E/A udlg.
-
Hallo,
danke für die Tipps.
Das ganze soll darauf hinauslaufen das ich eine exe Programmiere und ein Freund,
und die beiden exe miteinander kommunizieren.Ein Problem habe ich noch: Wie können die beiden Exe kommunizieren, wenn sie beide laufen? Also per messages oder so....
Ein Beispiel:
Exe 1 macht irgendwas, unabhängig von Exe2
Exe2 macht irgendwas, unabhängig von Exe1Wenn jetzt Exe 1 vom Benutzer geschlossen wird, soll die Exe 1 an Exe 2 eine Botschaft schicken, das Exe 1 geschlossen wurde.
Also kurz die Frage: Wie kann ein offenes c Programm an ein anderes offenes C programm eine Nachricht schicken?
-
Ferby schrieb:
Also kurz die Frage: Wie kann ein offenes c Programm an ein anderes offenes C programm eine Nachricht schicken?
such mal bei google nach 'inter-process communication', sockets, shared memory, usw. kommt drauf an, was das betriebssystem so hergibt.

-
Ich denke an diesem Punkt ist der Thread in WinAPI besser aufgehoben. goto WinAPI;
-
Dieser Thread wurde von Moderator/in Tim aus dem Forum ANSI C in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo,
ich habe danach schon in Google gesucht, allerdings bekomme ich immer nur C++ Lösungen, ich suche aber eine Ansi C Lösung....
Hat wer eine Idee??
-
Such einmal hier in WinAPI nach CreateProcess (wobei CreateProcess mittlerweile veraltert ist, glaube ich).
-
Die Berkeley-Sockets API ist eine reine C API. WinSockets (was zu 90% Berkeley-Sockets kompatibel ist) ist auch eine reine C API.
Andere OS spezifische APIs zur Kommunikation zwischen Prozessen sind auch fast immer C APIs. In Windows gibt es da z.B. Named-Pipes, Mailslots, Window-Messages (man kann z.B. WM_COPYDATA verwenden) und IIRC noch ein paar andere. Alles reine C APIs.
Also, wo ist das Problem?

-
wo find ich den da ne schönes tuti?
-
im intanetili
