What are file descriptors and how does I/O buffering work? | LetsGit.IT