2012-04-13 15 views
1

Ich arbeite in C++, und ich brauche eine Möglichkeit, um die Eingabe und Ausgabe der Konsole zu erfassen, als ob ich gerade durch das Terminal arbeiten würde.Wie kann ich beim Ausführen eines Programms die Eingabe und Ausgabe in eine Datei erfassen?

Also sagen wir, ich habe eine ausführbare Datei test.exe und eine Eingabedatei input.txt und ich möchte eine Kombination der Eingabe und Ausgabe zu console.out speichern, welche Terminalbefehl muss ich tun?

Ich bin nicht großartig in Linux-Befehle, obwohl ich mein Bestes zu google, also wenn Sie Ihre Hilfe wissen würde sehr geschätzt werden!

Wenn zum Beispiel die Eingabedatei in sich hat:

show 
ignore 
hide 

und nach meiner Progamm mit diesem Eingang ausgeführt wird, hat die Ausgabedatei in es:

Enter Command: 
/****SHOWING DATA!****/ 
Enter Command: 
/****IGNORING DATA!***/ 
Enter Command: 
/***HIDING DATA!***/ 

möchte ich eine Datei das sieht so aus:

Das fängt also ein, was ich im Terminal sehen würde, wenn ich es wi laufen würde keine Umleitung.

Antwort

1

Sie könnten versuchen, Umleitung > console.out um die Ausgabe zu erfassen. Der Befehl script erfasst die gesamte Sitzung.

+0

Das wird nicht genau das tun, was ich suche – Layla

2

Der Befehl script erfüllt möglicherweise Ihre Anforderungen. Es zeichnet Eingabe und Ausgabe auf und speichert sie in einer Datei. Das einzige Problem ist, dass es eine Gewohnheit hat, Befehlszeilen- oder Eingabe-Editing aufzuzeichnen, so dass Sie die Ausgabe möglicherweise etwas bereinigen müssen. Here is a link das erklärt es ein wenig.

Sie starten das Dienstprogramm, indem Sie einfach script an der Befehlszeile eingeben. Dann würden Sie Ihr Programm ausführen. Geben Sie Strg + D (^ D) ein, um das script Dienstprogramm anzuweisen, die Aufzeichnung zu stoppen. Die Ausgabe in einer Datei typescript.out im Verzeichnis mit dem Namen sein, die Ihnen den Einstieg in.

Aktualisiert nach der Frage ändern

auf die neue Frage Basierend, ich glaube nicht, dass Sie leicht erreichen können, was Sie sind fragend. Nur das Programm weiß wieviele Eingaben von stdin das es verbraucht hat. Es gibt keine gute Möglichkeit zu wissen, dass das Programm die Standardeingabe liest, bis der Zeilenumbruch vor dem Anzeigen der nächsten Eingabeaufforderung aufgetreten ist.

+0

, die keine der Eingabe, die wir nach innen gerichtet ausgedruckt. Ich möchte, dass das in das Typoskript aufgenommen wird. Wie können wir das machen? – Layla

+0

was genau meinst du? Wir haben uns den Katzenmann angeschaut und sind immer noch nicht sicher, wie wir das machen sollen, um das zu machen, was wir wollen? Gibt es irgendeinen Weg, den du ausarbeiten könntest? – Layla

0

Lassen Sie Ihr Programm, zusätzlich zur Ausgabe auf dem Bildschirm, auch in die Datei ausgeben. Da Sie von Benutzern eingegebene Befehle analysieren, sollten Sie sie auch über Variablen zugänglich machen. Geben Sie diese auch einfach aus.

+0

ich wünschte, ich könnte, aber mein Code hat Tausende von Zeilen der Ausgabe und ich denke nicht, dass wäre weise – Layla

Verwandte Themen