Basically on UNIX, read() and write() functions are unbuffered I/O,
and there are Standard I/O, which is buffered I/O.
But, read() and write() functions use buffer cache which is in kernel before doing real I/O(I/O to real device), and real I/O happens using buffer cache. It's using buffer.
I heard unbuffered I/O means I/O happens on char-by-char to real device.
Then, why read() and write() functions are unbuffered I/O, even though it is using buffer cache?