1.出处
fflush是libc.a中提供的方法,
fsync是系统提供的系统调用。
2.原形
fflush接受一个参数FILE *.
fflush(FILE *);
fsync接受的时一个Int型的文件描述符。
fsync(int fd);
3.功能
fflush:是把C库中的缓冲调用write函数写到磁盘[其实是写到内核的缓冲区]。
fsync:是把内核缓冲刷到磁盘上。
c库缓冲-----fflush---------〉内核缓冲--------fsync-----〉磁盘
另外关于内核缓冲,标准库缓冲和用户空间缓冲的说法见APUE 5.14:
One inefficiency inherent in the standard I/O library is the amount of data copying that takes place. When we use the line-at-a-time functions, fgets and fputs, the data is usually copied twice: once between the kernel and the standard I/O buffer (when the corresponding read or writeis issued) and again between the standard I/O buffer and our line buffer.