What is the difference between read() and fread()?
Family read()
-> open
, close
, read
, write
Family fread()
-> fopen
, fclose
, fread
, fwrite
Family read:
- are system calls
- are not formatted IO: we have a non formatted byte stream
Family fread
- are functions of the standard C library (libc)
- use an internal buffer
- are formatted IO (with the "%.." parameter) for some of them
- use always the Linux buffer cache
More details here, although note that this post contains some incorrect information.