Wie eigene Konsoleausgabe noch zusätzlich in Datei speichern?

partitionist

Erfahrenes Mitglied
Hallo, ich habe ein Shell gebastelt mit der Befehle eingegeben und ausgeführt(CreateProcess) werden, kurzes Beispiel:

Shell.cpp
Code:
void prompt() 
{ 
    cout << ":>>"; 
} 
int main () 
{ 
    string input; 
     
 
    do{ 
        prompt(); 
         
        getline(cin, input); 
        if(input == "exit") 
        { 
            return 0; 
        }        
        //... 
 
    }while(1); 
 
    return 0; 
}


Es geht darum eine Log-Funktion einzubauen, d.h. alles was man in der Konsole sieht soll in eine Datei gespeichert werden, so ähnlich wie bei WYSIWYG.

Was muss nun gemacht werden damit alles was in der Ausgabe mit cout & cin noch zusätzlich in eine Datei kommt?
 
Ich würde vorschlagen, Du erzeugst eine Datei, in die du die eingegebenen Kommandozeilen direkt speicherst:

Code:
    std::ofstream ofLogFile;
    ofLogFile.open(strLogfileName.c_str());
    ofLogFile << input;

Die Ausgaben der Programme mußt Du dann über eine Pipe in Dein Programm umleiten. Dort gibst Du sie auf der Konsole aus und schreibst sie in die Datei. Wie das mit der Pipe unter Windows geht, habe ich hier an anderer Stelle schonmal beschrieben.:suchen:
 
Ich verstehe zwar Deine Frage nicht ganz, aber die Pipes erzeugst du da, wo Du CreateProcess aufrufst. Diesem Aufruf gibst Du die Pipe-Handles, die Du beim Erzeugen der Pipes bekommst, in der STARTUPINFO-Struktur mit.

Ich sehe gerade, daß ich Dir das schonmal gezeigt habe, wie das mit CreateProcess und Pipes funktioniert: nämlich hier. Schau's Dir am Besten nochmal an.
 
Zurück