Konsole beim Aufruf von "system" in C ++ unterdrücken

8

Ich verwende den Befehl system in C ++, um ein externes Programm aufzurufen, und wenn ich es verwende, öffnet und schließt sich ein Konsolenfenster, nachdem der Befehl beendet ist.

Wie kann ich das Öffnen eines Konsolenfensters vermeiden? Ich würde mich freuen, wenn die Lösung plattformunabhängig wäre. Ich möchte auch, dass mein Programm wartet, bis der Befehl beendet ist.

    
Dana 26.11.2009, 09:08
quelle

5 Antworten

3

Es klingt, als ob Sie Windows benutzen.

Unter Linux (und * nix im Allgemeinen) würde ich den Aufruf von system durch Aufrufe von fork bzw. exec ersetzen. Unter Windows denke ich, dass es eine Art Spawn-eine-neue-Prozess-Funktion in der Windows-API gibt - konsultiere die Dokumentation.

Wenn Sie Shell-Befehle und / oder externe Programme ausführen, ist Ihr Programm kaum plattformunabhängig, da es von der Plattform mit den Befehlen und / oder externen Programmen abhängt, die Sie ausführen.

    
Jonas Kölker 26.11.2009, 09:15
quelle
5

Dies ist wahrscheinlich der einfachste und vielleicht der beste Weg, dies wird auch dazu führen, dass Ihr Programm nicht einfriert, während Sie diesen Befehl ausführen. Vergessen Sie zunächst nicht, den Windows-Header mit zu verwenden;

%Vor%

Dann müssen Sie die folgende Funktion verwenden, um Ihren Befehl auszuführen;

%Vor%

Hinweis; Die WinExec -Methode ist seit über einem Jahrzehnt veraltet. Trotzdem funktioniert es heute noch gut. Sie sollten diese Methode nicht verwenden, wenn sie nicht benötigt wird.

... anstatt wie Sie nicht verwenden möchten;

%Vor%     
Tim Visée 13.03.2012 14:30
quelle
1

Ähm. CreateProcess oder ShellExecute .

    
Alex Budovski 26.11.2009 09:45
quelle
0

exec () sieht ziemlich plattformunabhängig aus, da es POSIX ist. Unter Windows ist es _exec () während es exec () unter Unix ist: Siehe Ссылка

    
Philippe F 26.11.2009 09:38
quelle
0

Hier können Sie Befehle ohne ein neues cmd.exe -Fenster ausführen. Basiert auf Roland Rabiens Antwort und MSDN habe ich eine funktionierende Funktion geschrieben:

%Vor%

Funktioniert auf allen Windows-Plattformen. Rufen Sie an, als würden Sie system() .

    
MD XF 10.03.2017 22:34
quelle

Tags und Links