SYNC - Linux手册页
Linux程序员手册 第2部分
更新日期: 2020-08-13
名称
sync,syncfs-将文件系统缓存提交到磁盘
语法
#包括
void sync(void);
int syncfs(int fd);
glibc的功能测试宏要求(请参阅feature_test_macros(7)):
同步():
- _XOPEN_SOURCE>= 500 || / *自glibc 2.19起:* / -_DEFAULT_SOURCE || / * Glibc版本
syncfs():
- _GNU_SOURCE
说明
sync()导致对文件系统元数据和缓存的文件数据的所有未决修改被写入基础文件系统。
syncfs()类似于sync(),但是仅同步包含打开文件描述符fd所引用文件的文件系统。
返回值
syncfs()成功返回0;如果出错,则返回-1并将errno设置为错误。
错误说明
sync()总是成功的。
syncfs()可能至少由于以下原因而失败:
- EBADF
- fd不是有效的文件描述符。
- EIO
- 同步期间发生错误。此错误可能与写入文件系统上任何文件或与文件系统本身相关的元数据的数据有关。
- ENOSPC
- 同步时磁盘空间已用完。
- ENOSPC, EDQUOT
- 数据已写入NFS或另一个在write(2)系统调用时未分配空间的文件系统上的文件中,并且由于存储空间不足,先前的某些写入操作失败。
版本
syncfs()首次出现在Linux 2.6.39中。库支持在版本2.14中添加到glibc。
遵循规范
sync():POSIX.1-2001,POSIX.1-2008,SVr4、4.3BSD。
syncfs()是特定于Linux的。
备注
从glibc 2.2.2开始,sync()的Linux原型如上所述,遵循各种标准。在glibc 2.2.1和更早版本中,它是" int sync(void)",并且sync()始终返回0。
根据标准规范(例如POSIX.1-2001),sync()计划写入,但可能在完成实际写入之前返回。但是Linux等待I / O完成,因此sync()或syncfs()提供与分别在系统或文件系统中的每个文件上调用的fsync()相同的保证。
在5.8之前的主线内核版本中,仅当传递错误的文件描述符(EBADF)时,syncfs()才会失败。从Linux 5.8开始,如果自上次syncfs()调用以来未能写回一个或多个inode,syncfs()还将报告错误。
BUGS
在1.3.20版之前,Linux在返回之前没有等待I / O完成。
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。