My understanding was that one could not control the file descriptor (integer) assigned by the OS when opening a new file using open(). How then is it possible in a bash shell to assign a specific file descriptor using a command like
exec 5>&1
(I suppose I could find out by reading the bash sources…)
I believe you are right that sometimes file descriptors may already be in use. I got this from http://tldp.org/LDP/abs/html/io-redirection.html#FTN.AEN17716
“Using file descriptor 5 might cause problems. When Bash creates a child process, as with exec, the child inherits fd 5 (see Chet Ramey’s archived e-mail, SUBJECT: RE: File descriptor 5 is held open). Best leave this particular fd alone.”
The solutiont to this is specified in section 3.6 paragraph 2 of the bash manual.
For example