Вывод отображается в консоли, но исчезает при перенаправлении в файл

Я использую инструмент для тестирования жестких дисков, fstest.exe. Он отлично работает из командной строки, показывая, сколько времени потребовалось для выполнения различных задач создания файла / -deletion / -mangling. Обычный вывод при запуске из командной строки какfstest.exe otherParamsвыглядит так:

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

Проблема в том, что когда я перенаправляю вывод в файл, он ничего не отображает:

fstest.exe otherParams > out.txt создает пустой файл out.txt, даже если команда в противном случае выполнялась просто отлично (и создала несколько тестовых файлов в рамках своего выполнения).

Как я могу заставить это приложение перенаправить вывод в файл? Я попытался более подробно рассмотреть это с помощью PowerShell (через Start-Process), и потоки стандартных ошибок и стандартных ошибок просто пусты.

Другие вещи, которые я пробовал:

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

(Это создает оба out.txt и err.txt, оба пустые.)

Что может привести к тому, что приложение изменит свой вывод в зависимости от того, перенаправлено ли оно, и есть ли способ сделать его перенаправленным в файл?

ОБНОВЛЕНИЕ: я получил в свои руки исходный код. Это C ++, а вывод простоprintf заявления.

Ответы на вопрос(3)

Ваш ответ на вопрос