Many of the UNIX system calls return file descriptors.  Instead of using other
UNIX system calls to perform I/O on them, you can create a stream around them.
For this purpose, fd-streams exist.  See also read-n-bytes.
:input :output :element-type :buffering :name :file :original :delete-original :auto-close :timeout :pathname ¶This function creates a file descriptor stream using
  descriptor.  If :input is non-nil, input operations are
  allowed.  If :output is non-nil, output operations are
  allowed.  The default is input only.  These keywords are defined:
  
:element-typeis the type of the unit of transaction for
    the stream, which defaults to string-char.  See the Common Lisp
    description of open for valid values.
:bufferingis the kind of output buffering desired for
    the stream.  Legal values are :none for no buffering,
    :line for buffering up to each newline, and :full for
    full buffering.
:nameis a simple-string name to use for descriptive
    purposes when the system prints an fd-stream.  When printing
    fd-streams, the system prepends the streams name with Stream
      for .  If name is unspecified, it defaults to a string
    containing file or descriptor, in order of preference.
:file, :originalfile specifies the defaulted
    namestring of the associated file when creating a file stream
    (must be a simple-string). original is the
    simple-string name of a backup file containing the original
    contents of file while writing file.
When you abort the stream by passing t to close as
    the second argument, if you supplied both file and
    original, close will rename the original name
    to the file name.  When you close the stream
    normally, if you supplied original, and
    delete-original is non-nil, close deletes
    original.  If auto-close is true (the default), then
    descriptor will be closed when the stream is garbage
    collected.
[:pathname]: The original pathname passed to open andreturned by pathname; not defaulted or translated.
:timeoutif non-null, then timeout is an integer
    number of seconds after which an input wait should time out.  If a
    read does time out, then the system:io-timeout condition is
    signalled.
  
This function returns t if object is an fd-stream, and
  nil if not.  Obsolete: use the portable (typep x
    'file-stream).
This returns the file descriptor associated with stream.