[問題] fread & read

看板C_and_CPP (C/C++)作者 (Shizuru)時間16年前 (2009/03/02 19:37), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/1
想請教fread和read之間的差異是什麼 因為在Linux Device Driver上第三章看到一句話: 應用程式使用標準I/O函式庫(例如fread())來讀取scull裝置 其實不會發現scull_read的量化傳輸行為 在read中,他有對每次read的量作一個限定(4000bytes) 那也就是說,當一次的讀取量超過4000bytes,就需要分兩次讀取 也就是read()函數要呼叫兩次 那他所謂fread()不會發現量化傳輸行為的意思是指什麼 因為在fread()中,不也是要指定傳size大小的資料n次嗎 還請各位先進指點一番,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.74.245.163

03/02 21:53, , 1F
差別在於fread必然會傳那麼多回來 而read是最多傳那麼多回來
03/02 21:53, 1F

03/02 21:54, , 2F
也就是如果scull一次推600個byte的話 fread就會等到它推7次
03/02 21:54, 2F

03/02 21:54, , 3F
之後累積了4000byte (如果你是指定4000的話) 再回傳
03/02 21:54, 3F

03/02 21:55, , 4F
而read則是現在有600就傳600回來這樣
03/02 21:55, 4F

03/02 21:57, , 5F
喔,原來如此,謝謝L大的解說
03/02 21:57, 5F
文章代碼(AID): #19gyJpYH (C_and_CPP)
文章代碼(AID): #19gyJpYH (C_and_CPP)