Spec-Zone.ru › GNU Fortran 13

8.110 FLUSH — Flush I/O unit(s)

Описание:

Очищает буфер Fortran-блока(ов), в настоящее время открытых для вывода. Без необязательного аргумента очищаются все блоки, в противном случае очищается только указанный блок.

Стандарт:

Расширение GNU

Класс:

Подпрограмма

Синтаксис:

CALL FLUSH(UNIT)

Аргументы:
UNIT (Необязательно) Тип должен быть INTEGER.
Примечание:

Начиная со стандарта Fortran 2003, существует оператор FLUSH, который следует предпочитать FLUSH встроенной функции.

Встроенная функция FLUSH и оператор Fortran 2003 FLUSH имеют идентичный эффект: они очищают буфер ввода-вывода библиотеки времени выполнения, чтобы данные стали видимыми для других процессов. Это не гарантирует, что данные записаны на диск.

В системах POSIX можно запросить, чтобы все данные были переданы в устройство хранения, вызвав функцию fsync, с POSIX дескриптором блока ввода-вывода в качестве аргумента (полученного с помощью GNU встроенной функции FNUM). Следующий пример демонстрирует это:

! 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-13.3.0/gfortran/FLUSH.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API