编程接口指南

同步的 I/O

应用程序可能需要保证已将信息写入稳定存储器,或者保证按照特定顺序执行文件更新。为此,需要提供同步的 I/O。

同步模式

在 SunOS 中,如果系统确保以后每次打开文件之后均可以读取所有写入的数据,写操作即可成功。此检查假设物理存储介质不存在任何故障。如果物理存储介质上的数据映像可用于请求进程,则可成功传输读操作的数据。如果关联数据已成功传输或者 I/O 操作已诊断为不成功,则此操作便已完成。

当出现以下情况时,I/O 操作会实现同步的 I/O 数据完整性:

同步文件

fsync(3C)fdatasync(3RT) 将文件显式同步到辅助存储器中。

fsync(3C) 例程可保证在 I/O 文件完整性实现的级别同步接口。fdatasync(3RT) 可保证在 I/O 数据完整性实现的级别同步接口。

应用程序可以在每个 I/O 操作完成之前同步各操作。使用 open(2)fcntl(2) 针对文件描述设置 O_DSYNC 标志,可以确保所有 I/O 写入在操作完成之前便会完成 I/O 数据。针对文件描述设置 O_SYNC 标志,可以确保所有 I/O 写入在指示操作为完成之前便已完成。针对文件描述设置 O_RSYNC 标志,可以确保所有 I/O 读取(read(2)aio_read(3RT))都达到描述符设置所请求的相同完成级别。描述符设置可以为 O_DSYNCO_SYNC