Problem
1. Explain the difference between system calls and library functions. What happens in the CPU when a system call is invoked?
2. Why must we immediately check the value of errno after a system call fails, rather than later?
3. What is a file descriptor, and what is it used for?
4. Check the man pages of open, dup, dup2, pipe, and fcntl and see if you find anything they have in common.