Ich versteh irgendwie Bahnhof
Also ich versteh nicht so recht was du machen willst. Also noch mal langsam, tief Luft holen

und Schritt fuer Schritt, damit wir es auch Begreifen.
Was ich bisher verstanden hab:
- Du hasst ein Programm schon geschrieben (compiliert, exe lauffaehig !).
? Das Programm soll so bleiben ? nehm ich mal an !
? Hat dieses Programm eine GUI ? oder ist es eine ConsolenApp ?
- Du willst dieses Programm aus einem anderen, neuen Programm starten ! (Quellcode ruft nix auf, Quellcode kompiliert nur ! )
? Obig geposteter Code ist der Code, fuer die 2te App, die die erste starten soll, richtig ?
weiß ich nicht was für Parameter ich für int argc, char* argv[] übergeben muss.
Was das soll, weiss ich gar nicht !
du rufst doch die main nicht auf ! Das macht generell das Betriebssystem. Die main() ist dein Einsprungspunkt.
argc und argv sind Parameter(Argumente) die dir mitgegeben werden, und zwar sind das die commandlineparameter, mit der deine App(exe) aufgerufen wurde ! Die fasst du nur (lesend)an, wenn du mit deinem Prog auch kommandozeilenoptionen auswerten willst !
BinaerCode von einem Programm(Prozess) aus einem anderen Kompilat ausfuehren geht eigentlich nur mit Dlls (dynamische Bibliotheken) (inprocess).
andere Exes kannst du nur ueber das BS ausfuehren lassen, nicht selber:
Dabei musst unterscheiden, ob du synchron, oder assynchron aufrufen willst:
synchron: dein aktueller prozess wird "überlagert" also kurz ausgesetzt.
dein neues Programm wird in den prozess geladen und ausgefuehrt
wurde dein Programm beendet, wird dein orginaler code wieder aktiviert und weiter ausgefuehrt.
ergo: du rufst die synchrone funktion auf, dein anderes programm startet, laeuft , beendet sich, und wenn beendet, kommt in deinem Programm die synchrone funktion zurueck:
Rueckgabewert ist der Exit-Code des Programms, das aufgerufen wurde.
unter Linux/posix:
exec... familie:
int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg , ..., char * const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
unter Windows (WinAPI):
_exec[...] funktionen
_wexec[...] funktionen
Assynchron:
Dein aktueller Prozess wird nicht ueberlagert, stattdessen wird ein neuer prozess gestartet. Deine Aufruffunktion kehrt sofort zurueck ...
und rueckgabewert ist dann nateurlich nur ein interner Fehlercode, ob das starten des Progs geklappt hat.
Linux/Posix:
system()
nachbau durch Kombination aus fork() und den exec[...]() funktionen.
Windows (WinAPI):
system()
_wsystem()
CreateProcess()
Unter Qt gibts natuerlich auch ne schoene Klasse, die dir zumindest fuer die assynchrone variante alles auf eine Lib Adaptiert :
QProcess
Ciao ...