Wyjście pojawia się w konsoli, ale znika po przekierowaniu do pliku
Używam narzędzia, które testuje dyski twarde, fstest.exe. Działa dobrze z wiersza poleceń, wyświetlając, ile czasu zajęło wykonanie różnych zadań tworzenia / usuwania / usuwania plików. Zwykłe wyjście po uruchomieniu z linii poleceń jakofstest.exe otherParams
, wygląda tak:
---
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)
---
Problem polega na tym, że gdy przekierowuję dane wyjściowe do pliku, nic nie wyświetla:
fstest.exe otherParams > out.txt
tworzy pusty plik out.txt, nawet jeśli polecenie zostało wykonane poprawnie (i utworzyło kilka plików testowych w ramach jego wykonania).
Jak mogę zmusić tę aplikację do przekierowania danych wyjściowych do pliku? Próbowałem przyjrzeć się temu bliżej za pomocą PowerShell (poprzez Start-Process), a strumienie standardowego i standardowego błędu są po prostu puste.
Inne rzeczy, które próbowałem:
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
(Tworzy to zarówno out.txt, jak i err.txt, oba puste.)
Co spowodowałoby zmianę aplikacji w zależności od tego, czy została przekierowana, i czy jest jakiś sposób, aby przekierować ją do pliku?
AKTUALIZACJA: Mam ręce na kod źródłowy. To C ++, a wyjście jest prosteprintf
sprawozdania.