>>> 此贴的回复 >> 不是.只是修改了缓冲区.操作系统定期刷新缓冲区的内容到磁盘上.如果想及时更新磁盘上的数据有必要使用fsync()
>>> 此贴的回复 >> fflush()也有这个功能,但它里面的参数是文件句柄, 同 fsycn()有什么区别吗?
>>> 此贴的回复 >> 一个是文件流, 一个是文件描述符. 他们之间是可以相互转换的. man fdopen 将文件描述符转换成流 man fileno 讲流转换成文件描述符
>>> 此贴的回复 >> fflush 是把 FILE * 里的缓冲区(位于用户态进程空间)刷新到内核中 fsync 是把内核中对应的缓冲(是在 vfs 层的缓冲)刷新到硬盘中
>>> 此贴的回复 >> write() 只是没有用户空间的缓冲(就像 stdio 提供的), 但是它仍然有内核中的缓冲.
分不清楚 fflush() 和 fsync() 就说明还没有用户空间和内核空间的概念. 建议系统的学习/补习一下.