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