Reading file using fread in C
c, operating-system
Solution
Here's my answers
- More than 1 block, default caching is 64k. `setvbuffer` can change that.
- On the second read, there's no I/O. The data is read from the disk cache.
- No, a file is ussuly smaller than it's disk space. You'll get an error reading past the file size even if you're within the actual disk space size.
- It's part of the `FILE` structure. This is implementation (compiler) specific so don't touch it.
The above caching is used by the C runtime library not the OS. The OS may or may not have disk caching and is a separate mechanism.
Problem
I lack formal knowledge in Operating systems and C. My questions are as follows. - When I try to read first single byte of a file using `fread` in C, does the entire disk block containing that byte is brought into memory or just the byte? - If entire block is brought into memory, what happens on reading second byte since the block containing that byte is already in memory?. - Is there significance in reading the file in size of disk blocks? - Where is the read file block kept in memory?