File descriptors are the things that tie Unix programs together --- they let your program work with files, sockets, terminals, and even weirder, abstracter-er things!
Our programs can pass file descriptors around via process inheritance, or we can pass them down (you guessed it!) another file descriptor, which is a pretty neat solution to some problems!
But things get REALLY WEIRD and FUN once you realize you can pass those file descriptors down themselves, back to your own program. Why would you do that, and how?! We will find out!