8.87 FLUSH — Flush I/O unit(s)
- Description:
- Flushes Fortran unit(s) currently open for output. Without the optional argument, all units are flushed, otherwise just the unit specified.
- Standard:
- GNU extension
- Class:
- Subroutine
- Syntax:
-
CALL FLUSH(UNIT) - Arguments:
-
UNIT (Optional) The type shall be INTEGER. - Note:
- Beginning with the Fortran 2003 standard, there is a
FLUSHstatement that should be preferred over theFLUSHintrinsic.The
FLUSHintrinsic and the Fortran 2003FLUSHstatement have identical effect: they flush the runtime library's I/O buffer so that the data becomes visible to other processes. This does not guarantee that the data is committed to disk.On POSIX systems, you can request that all data is transferred to the storage device by calling the
fsyncfunction, with the POSIX file descriptor of the I/O unit as argument (retrieved with GNU intrinsicFNUM). The following example shows how:! Declare the interface for POSIX fsync function interface function fsync (fd) bind(c,name="fsync") use iso_c_binding, only: c_int integer(c_int), value :: fd integer(c_int) :: fsync end function fsync end interface ! Variable declaration integer :: ret ! Opening unit 10 open (10,file="foo") ! ... ! Perform I/O on unit 10 ! ... ! Flush and sync flush(10) ret = fsync(fnum(10)) ! Handle possible error if (ret /= 0) stop "Error calling FSYNC"
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.3/gfortran/FLUSH.html