diff options
author | fxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-06-10 19:14:12 +0000 |
---|---|---|
committer | fxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-06-10 19:14:12 +0000 |
commit | 21e0620a67e03c10f486249f80903a92483dbeaf (patch) | |
tree | 0a1e16a67d7bec53679bc6cb4e472574fc95eef7 /gcc | |
parent | d1c662df00eb4568c99b0fa8e2307370ae01c615 (diff) | |
download | gcc-21e0620a67e03c10f486249f80903a92483dbeaf.tar.gz |
PR fortran/43032
* intrinsic.texi (FLUSH): Note the difference between FLUSH and
POSIX's fsync(), and how to call the latter from Fortran code.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@160568 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/intrinsic.texi | 38 |
2 files changed, 44 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index acb5fe1e65d..87e4c3cbc25 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2010-06-10 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + + PR fortran/43032 + * intrinsic.texi (FLUSH): Note the difference between FLUSH and + POSIX's fsync(), and how to call the latter from Fortran code. + 2010-06-10 Daniel Franke <franke.daniel@gmail.com> PR fortran/44457 diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi index aa3241d6b74..a24ad91cc2d 100644 --- a/gcc/fortran/intrinsic.texi +++ b/gcc/fortran/intrinsic.texi @@ -4185,6 +4185,44 @@ Subroutine Beginning with the Fortran 2003 standard, there is a @code{FLUSH} statement that should be preferred over the @code{FLUSH} intrinsic. +The @code{FLUSH} intrinsic and the Fortran 2003 @code{FLUSH} statement +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 @code{fsync} function, with the POSIX file +descriptor of the I/O unit as argument (retrieved with GNU intrinsic +@code{FNUM}). The following example shows how: + +@smallexample + ! 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" +@end smallexample + @end table |