La salida se muestra en la consola, pero desaparece cuando se redirige al archivo

Estoy usando una herramienta que prueba los discos duros, fstest.exe. Funciona bien desde la línea de comandos, mostrando cuánto tiempo se tardó en realizar varias tareas de creación / eliminación de archivos / parpadeo. La salida habitual, cuando se ejecuta desde la línea de comando comofstest.exe otherParams, Se ve como esto:

---
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)
---

El problema es que cuando redirecciono la salida al archivo, no muestra nada:

fstest.exe otherParams > out.txt crea un archivo vacío out.txt, incluso aunque el comando se ejecute bien (y creó algunos archivos de prueba como parte de su ejecución).

¿Cómo puedo forzar esta aplicación para redirigir la salida a un archivo? He intentado verlo más de cerca con PowerShell (a través de Start-Process), y tanto las corrientes de salida estándar como las de error estándar están vacías.

Otras cosas que he probado:

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

(Eso crea tanto out.txt como err.txt, ambos vacíos.)

¿Qué causaría que una aplicación cambie su salida dependiendo de si está redirigida, y hay alguna manera de hacer que la redirija al archivo?

ACTUALIZACIÓN: He puesto mis manos en el código fuente. Es C ++, y la salida es sencilla.printf declaraciones

Respuestas a la pregunta(3)

Su respuesta a la pregunta