UNIX缓冲与无缓冲I / O

Kee*_*eto 2 unix io buffered

无缓冲I / O和标准I / O有什么区别?我知道使用read(),write(),close()是无缓冲的IO。Printf和gets是缓冲的IO。我也知道,对于大事务,最好使用缓冲IO。我只是不知道为什么。在这种情况下,术语“缓冲”是什么意思?

小智 5

无缓冲的I / O只是意味着在读取或写入时不使用任何缓冲区。通常,当我们使用诸如read()和write()之类的系统调用时,它们逐字符读取和写入一个字符,这会导致性能大幅下降。因此对于大日期而言,通常首选高级别的读/写或仅使用缓冲的I / O。缓冲仅意味着我们不处理单个字符,而是处理一个字符块,这就是为什么有时也将其称为块I / O的原因。在Unix中,当我们使用高级读/写功能时,它们获取/存储给定块大小的数据,并将其放置在缓冲区高速缓存中,并且这些I / O函数从该缓冲区高速缓存中获取所需的数据量。