2009-10-07 9 views

risposta

6

L'altro modo, se gfortran lo implementa, è chiamare la subroutine flush non standard. Non tutti i compilatori implementano questo.

+4

'FLUSH' come subroutine (come in' chiamata flush() ') non è standard, ma la dichiarazione' FLUSH' vale Fortran 2003: 'A FILO (10)' –

+0

Dal sito GNU, si dice: L'intrinseco FLUSH e l'istruzione FLUSH 2003 di Fortran hanno lo stesso effetto: svuotano il buffer I/O della libreria di runtime in modo che i dati diventino visibili ad altri processi. Questo non garantisce che i dati vengano trasferiti su disco. –

12

È necessario rendere l'uscita non bufferizzata. Prova a impostare la variabile di ambiente GFORTRAN_UNBUFFERED_ALL su 'y', 'Y' o 1.

+0

Dovrei fare questo da bash come segue: GFORTRAN_UNBUFFERED_ALL = 'y' esportazione $ GFORTRAN_UNBUFFERED_ALL ? Solo curioso? – banDedo

+0

Sì, anche se non è necessario il '$' nella riga di esportazione. Funzionerà finché non si esce dalla shell corrente. Se vuoi questo comportamento in modo permanente, potresti voler aggiungere quelle linee al tuo file '.bashrc'. –

+0

Ho provato la seguente prescrizione e ho digitato: GFORTRAN_UNBUFFERED_ALL = 'y' esportazione GFORTRAN_UNBUFFERED_ALL echo $ GFORTRAN_UNBUFFERED_ALL Echo stampato il valore corretto. Ho provato questo con 'y', 'Y', e 1. Nessuno del problema risolto. Grazie per il suggerimento, però. – banDedo

0

Quando ho bisogno di svuotare, basta chiudere il file e riaprirlo. Questo è maldestro e lento, ma non conosco un modo migliore in Fortran 90 che funzioni con tutti i compilatori.