Unter Linux versuche ich, stdout von einer Konsolenanwendung in eine Datei statt in die Konsole umzuleiten. Ich habe den Quellcode nicht. Ich habe mehrere Methoden ausprobiert, aber alle führten zu einer leeren Datei. Ohne Ausgabeumleitung funktioniert alles gut (ich sehe Konsolenmeldungen).
Ich habe versucht, zum Beispiel:
%Vor%Und nichts erscheint in out.txt und in der Konsole.
Ich habe versucht, die Anwendung mit strace auszuführen. Wenn ich keine Umleitung verwende, sehe ich Zeilen wie -
%Vor%Wenn ich die Ausgabeumleitung einführe, gibt es überhaupt keine Schreibaufrufe, was mich denken lässt, dass die Anwendung nach etwas sucht, bevor sie die Nachricht schreibt. Nach was sucht die Anwendung? Wie kann ich es umgehen?
Ich verwende CentOS 5.5 und Bash.
Basierend auf Ihrem strace hört es sich an, als würde das Programm testen, ob stdin und / our stdout ein tty ist. Ich habe es nie benutzt, aber Sie könnten versuchen, empty.sourceforge.net zu verwenden. Es wird angenommen, dass ein Pseudo-tty erstellt wird, der die Überprüfung Ihres Programms täuschen sollte.
Bearbeiten : Wenn Sie das tatsächlich getan haben und es ein Tippfehler in Ihrer Frage war. Es ist möglich, dass die Anwendung prüft, ob die Ausgabe ein TTY ist.
Edit2: Ok, versuchen Sie in diesem Fall script -qc progname > out.txt > 2>&1
In Debian / Ubuntu ist script
ein Teil des Pakets bsdutils
, das ein Essential-Paket ist und immer installiert wird.
Tags und Links linux bash redirect stdout output-redirect