1
的fread的()的语法是fread()/ fwrite中使用的缓冲区与read()/ write()中使用的缓冲区有什么不同?
size_t fread(void *buf,size_t size, size_t, count, FILE *stream);
而对于读()是
ssize_t read(int fd, void *buf, size_t len);
他们都使用缓冲器把读出的数据。这两个不同? 我的问题来自术语'用于fread()/ fwrite()stdio调用的缓冲I/O,而不是系统调用。
等待,'read'不被缓冲?手册页不谈论它。你怎么知道? (为什么在google上搜索它很困难?!) – Shahbaz 2013-04-29 09:30:39
好的,没有针对fd的用户 - 陆地视图进行缓冲。 fd是一种抽象(像美国人的水龙头或水龙头?),tap是内核和你的代码之间的边界。 'read(2)'是没有缓冲的,因为任何出现的数据都是刚刚传输到您的进程中的数据:对于应用程序,数据只是刚刚存在(我们知道,网卡在板上处理TCP并直接进入应用程序的RAM的DMA)。作为一个实现细节,内核可能也有一个缓冲区,但概念上'read'确实没有缓冲。 – 2013-04-29 09:36:16
对,从_that_观点:) – Shahbaz 2013-04-29 10:00:09