Linked Channels
---------------
Channels that come from a single opening share the same file
position; we call them "linked" channels. Linked channels result when
you make a stream from a descriptor using `fdopen', when you get a
descriptor from a stream with `fileno', when you copy a descriptor with
`dup' or `dup2', and when descriptors are inherited during `fork'. For
files that don't support random access, such as terminals and pipes,
_all_ channels are effectively linked. On random-access files, all
append-type output streams are effectively linked to each other.
If you have been using a stream for I/O, and you want to do I/O using
another channel (either a stream or a descriptor) that is linked to it,
you must first "clean up" the stream that you have been using. Note:Cleaning Streams.
Terminating a process, or executing a new program in the process,
destroys all the streams in the process. If descriptors linked to these
streams persist in other processes, their file positions become
undefined as a result. To prevent this, you must clean up the streams
before destroying them.