`close()`是否刷新缓冲的输出数据?

时间:2018-10-14 20:59:51

标签: c linux io

fclose()刷新缓冲的输出数据。

close()还会刷新缓冲的输出数据吗?

2 个答案:

答案 0 :(得分:6)

C程序中没有与打开的文件描述符关联的缓冲区,因此也没有缓冲的数据可言。

根据文件的性质,您的OS可能有也可能没有与打开的文件描述符(或与相应文件所在的设备)关联的某些缓冲区。这些通常在应用程序级别不可见,并且不受 { "manifest_version": 2, "name": "Firepower Browsing", "description": "Add a little firepower to your browsing with this explosive extension!", "version": "1.0", "content_scripts": [ { "matches": [ "<all_urls>" ], "js": ["popup.js"] } ],"browser_action": {} ,"background": { "scripts": ["popup.js"], "persistent": false }, "content_security_policy": "default-src 'self' 'unsafe-inline' 'unsafe-eval'; script-src 'unsafe-inline' 'unsafe-eval' 'self'; object-src 'self' 'unsafe-inline' 'unsafe-eval'", "browser_action": { "default_icon": "icon.png", "default_popup": "popup.html" }, "permissions": [ "activeTab" ] } 的影响。

答案 1 :(得分:5)

this表格来源:

  

成功关闭并不能保证数据已成功保存到磁盘,因为内核延迟写入。当关闭流时,文件系统不经常刷新缓冲区。如果需要确保物理存储数据,请使用fsync(2)。 (这将取决于磁盘硬件。)