If you do any sort of unix shell script-y-ness, you know all about STDIN, STDOUT, and STDERR. If you are a semi-advanced and above user, you know their numeric equivalents (0,1,2) and how they show up, or are implied, in some commands (ls -la 2>errs.go.here). Well it turns out there are defined slots for file descriptors 3-9 3-19, mostly left adrift on the sea of lost inside knowledge. Learning about them, it’s the first I have heard of how any process spawned by exec automatically inherits fd5, so you should avoid using it.
It definitely provides a possible explanation of why an external program being run with stdout and stderr redirected can still print a progress message on-screen.
UPDATE: Advanced Unix Programming by Marc J Rochkind says there are 20 fd’s available.