Further Sources of Information 1421
The manual pages describing the kernel and glibc APIs are available online at
http://www.kernel.org/doc/man-pages/.
GNU info documents
Rather than using the traditional manual page format, the GNU project documents
much of its software using info documents, which are hyperlinked documents that
can be browsed using the info command. A tutorial on the use of info can be
obtained using the command info info.
Although in many cases the information in manual pages and corresponding
info documents is the same, sometimes the info documentation for the C library
contains additional information not found in the manual pages or vice versa.
The reasons both manual pages and info documents exist, even though both
may contain the same information, are somewhat religious. The GNU project
prefers the info user interface, and so provides all documentation via info.
However, users and programmers on UNIX systems have had a long history of
using (and in many cases preferring) manual pages, so there is strong momen-
tum in favor of upholding this format. The manual pages also tend to include
more historical information (e.g., information about behavior changes across
versions) than do the info documents.
The GNU C library (glibc) manual
The GNU C library includes a manual that describes the use of many of the func-
tions in the library. The manual is available at http://www.gnu.org/. It is also pro-
vided with most distributions in both HTML format and info format (via the
command info libc).
Books
An extensive bibliography can be found at the end of this book, but a few books
deserve special mention.
At the top of the list are the books by the late W. Richard Stevens. Advanced
Programming in the UNIX Environment ([Stevens, 1992]) provides detailed coverage
of UNIX system programming, focusing on POSIX, System V, and BSD. A recent
revision by Stephen Rago, [Stevens & Rago, 2005] updates the text for modern
standards and implementations, and adds coverage of threads and a chapter on net-
work programming. This book is a good place to look for an alternative viewpoint on
many of the topics covered in this book. The two-volume UNIX Network Programming
([Stevens et al., 2004], [Stevens, 1999]) provides extremely detailed coverage of
network programming and interprocess communication on UNIX systems.
[Stevens et al., 2004] is a revision by Bill Fenner and Andrew Rudoff of
[Stevens, 1998], the previous edition of Volume 1 of the UNIX Network
Programming. While the revised edition covers several new areas, in most cases
where we make reference to [Stevens et al., 2004], the same material can also
be found in [Stevens, 1998], albeit under different chapter and section numbers.
Advanced UNIX Programming ([Rochkind, 1985]) was a good, brief, and sometimes
humorous, introduction to UNIX (System V) programming. It is nowadays avail-
able in an updated and extended second edition ([Rochkind, 2004]).