C ++ popen Befehl ohne Konsole

8

Wenn ich popen benutze, um die Ausgabe eines Befehls zu erhalten, sagt dir, wird es eine Konsole ausgeben.

kann ich jedoch die Ausgabe eines Befehls ohne das Erscheinen der Konsole erhalten?

Ich verwende Visual C ++ und möchte eine Bibliothek erstellen, die die Ausgabe eines Befehls zurückgibt, z. B. dir.

    
user883434 15.08.2011, 10:21
quelle

3 Antworten

5

Unter der Annahme von Windows (da dies die einzige Plattform ist, auf der dieses Verhalten endemisch ist):

CreatePipe () um die erforderlichen Pipes für die Kommunikation zu erstellen, und CreateProcess , um den untergeordneten Prozess zu erstellen.

%Vor%

Dies sollte mehr als nur Sie auf dem Weg zu tun, was Sie erreichen möchten.

    
Chris K 15.08.2011 15:45
quelle
2

Bei POSIX sollte es etwa so aussehen:

%Vor%

Sie sollten natürlich die Rückgabewerte usw. überprüfen ...

    
selalerer 15.08.2011 12:23
quelle
1

Ich musste dies für meine Vollbild-OpenGL-Windows-Anwendung lösen, konnte jedoch nicht verhindern, dass das Konsolenfenster auftauchte. Stattdessen scheint die Fokussierung nach einer kurzen Verzögerung gut genug zu funktionieren, um es nicht zu sehen.

%Vor%

Update: Dies funktioniert anscheinend nicht, wenn das Programm vom Explorer gestartet wird. Es funktioniert, wenn es von Visual Studio gestartet wird.

    
Tim Auld 27.12.2016 02:17
quelle

Tags und Links