Die Ausgabe wird in der Konsole angezeigt, verschwindet jedoch, wenn Sie in eine Datei umgeleitet wird

Ich benutze ein Tool zum Testen von Festplatten, fstest.exe. Es wird problemlos über die Befehlszeile ausgeführt und zeigt an, wie lange es gedauert hat, verschiedene Aufgaben zum Erstellen / Löschen / Verwirren von Dateien auszuführen. Die übliche Ausgabe, wenn von der Kommandozeile als ausgeführtfstest.exe otherParams, sieht aus wie das:

---
CPU Usage: 0.0%
Disk reads/sec: 0
Disk writes/sec: 0
Disk bytes/read: 0
Disk bytes/write: 0
Test duration: 0 milliseconds, 1153 ticks (3507177 ticks/sec)
---

Das Problem ist, dass beim Umleiten der Ausgabe in eine Datei nichts angezeigt wird:

fstest.exe otherParams > out.txt Erstellt eine leere out.txt-Datei, obwohl der Befehl ansonsten einwandfrei ausgeführt wurde (und erstellt einige Testdateien als Teil seiner Ausführung).

Wie kann ich diese Anwendung zwingen, die Ausgabe in eine Datei umzuleiten? Ich habe versucht, es mit PowerShell (über Start-Process) genauer zu betrachten, und sowohl der Standard-Out- als auch der Standard-Error-Stream sind nur leer.

Andere Dinge, die ich ausprobiert habe:

cmd /c "fstest.exe otherParams > out.txt"

fstest.exe otherParams 2>&1 >> out.txt

fstest.exe otherParams | sort

powershell Start-Process -FilePath .\fstest.exe -ArgumentList @("create2", "-openexisting") -RedirectStandardOutput out.txt -RedirectStandardError err.txt -wait

(Dadurch werden sowohl out.txt als auch err.txt erstellt, beide leer.)

Was würde dazu führen, dass eine Anwendung ihre Ausgabe ändert, abhängig davon, ob sie umgeleitet wird, und wie kann ich sie in eine Datei umleiten lassen?

UPDATE: Ich habe den Quellcode in die Hände bekommen. Es ist C ++ und die Ausgabe ist einfachprintf Aussagen.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage