Jest to prawdopodobnie głupie pytanie, ale nie widzę, co robię źle.Przekierowanie wyjścia powoduje pusty plik
Używam programu, który produkuje dane wyjściowe po wywołaniu, tak jak ./ar
. Dane wyjściowe wyglądają następująco:
-0.00781 0.02344 0.98828
-0.01172 0.02734 0.98828
-0.01562 0.02344 0.98047
-0.00781 0.02344 1.00000
-0.00391 0.02344 0.98438
Nowa linia danych wyjściowych jest zapisywana co sekundę.
Kiedy wywołuję taki kod ./ar > log
i zabijam program za pomocą ctrl-c
po kilku sekundach plik log
jest pusty.
Uruchomiłem ten kod w systemie wbudowanym. System ma partycję zapisu, która jest partycją, na której działam, i mam dostęp do zapisu, ponieważ jestem zalogowany jako root.
Po przekierowaniu wyjście jest buforowane, a nie buforowane. Jeśli naciśniesz Ctrl-C, zanim blok się zapełni, nic nie zostanie zapisane w pliku. Możesz użyć 'fflush (stdout)', aby natychmiast zapisać do pliku. –
Dzięki, że naprawiłem mój problem, musiałem uruchomić tę linię przed każdym poleceniem printf. – James
Wykonanie tego po 'printf' jest bardziej naturalne. –