Umleitung von der cmd ausgabe in einen filestream?



  • Abend, ist es möglich einen ausgeführten Cmd Befehl in einen Filestream umzuleiten?

    #include <iostream>
    #include <string>
    #include <windows.h>
    #include <fstream>
    using namespace std;
    
    int main() 
    {
    	char a[64];
    
    	while(1)
    	{
    		cin.getline(a, 64);
    		system(a);
                    //Hier würde ich gern die Ausgabe des ausgeführten Befehl an das System in einen Filestream umzuleiten oder in einen String zu schreiben
    	}
    }
    

  • Mod

    Nicht mit system. Aber es gibt in der Regel systemabhängige Funktionen, die dies zu leisten vermögen, beispielsweise popen in unixartigen Systemen (und unter Windows gibt es garantiert was ähnliches). In der Regel wirst du jedoch irgendeine Form von C-Dateihandle (oder gar einen Dateihandle nach Art des Betriebssystems) bekommen, keinen C++-fstream. Falls dir das nicht reicht, kann man solch einen Dateihandle aber auch mit einem Streaminterface versehen. Ist aber nicht ganz einfach, da man dazu einiges über Streams und ihre unterliegenden Mechaniken wissen muss. Wenn ich mich recht erinnere, bietet Boost eine fertige Lösung an, so dass man das nicht selber programmieren braucht.



  • Hmm ... man könnte es auch so machen, bei der Eingabe des Befehls einfach ">>" zu setzen.

    Beispiel: ping www.google.de >> test.txt

    Aber ich wollt eine "elegantere" Lösung finden ^^



  • Was hast Du denn vor?

    Evtl. ist C++ ja auch gar nicht die Lösung oder C++ ist super und ein shell command ist nicht die Lösung.



  • Für Windows gibts hier eine Lösung:
    https://www.c-plusplus.net/forum/248213-full


Log in to reply