In Chapter 9, Iostreams, we discussed the POSIX concept of file descriptors. A file descriptor
represents a source or sink of data which can be targeted by read and/or write; often, but not always, it corresponds to a file on disk. (Recall that file descriptor number 1 refers to stdout, which is usually connected to the human user's screen. File descriptors can also refer to network sockets, devices such as /dev/random, and so on.)
Furthermore, POSIX file descriptors, <stdio.h>, and <iostream> are all concerned, specifically, with the contents of a file on disk (or wherever)--the sequence of bytes that makes up the contents of the file. A file in the filesystem sense has many more salient attributes that are not exposed by the file-reading-and-writing APIs. We cannot use the APIs of Chapter 9, Iostreams, to determine the ownership of a file...