ptg10805159
xxii Preface
•In2011, the C standardwas updated, but because systems haven’t caught up yet
with the changes, we still refer to the 1999 version in this text.
Most notably,the platforms used in the second edition have become out-of-date. In this
book, the thirdedition, I cover the following platforms:
- FreeBSD 8.0, a descendant of the 4.4BSD release from the Computer Systems
Research Group at the University of California at Berkeley,running on a 32-bit
Intel Pentium processor. - Linux 3.2.0 (the Ubuntu 12.04 distribution), a free UNIX-like operating system,
running on a 64-bit Intel Core i5 processor. - Apple Mac OS X, version 10.6.8(Darwin 10.8.0)on a 64-bit Intel Core2Duo
processor.(Darwin is based on FreeBSD and Mach.) Ichose to switch to an
Intel platform instead of continuing with one based on the PowerPC, because
the latest versions of Mac OS X are no longer being ported to the PowerPC
platform. The drawback to this choice is that the processors covered arenow
slanted in favor of Intel. When discussing issues of heterogeneity, it is helpful to
have processors with different characteristics, such as byte ordering and integer
size. - Solaris 10, a derivative of System V Release 4 from Sun Microsystems (now
Oracle), running on a 64-bit UltraSPARC IIi processor.
Chang es from the Second Edition
One of the biggest changes to the Single UNIX Specification in POSIX.1-2008 is the
demotion of the STREAMS-related interfaces to obsolescent status. This is the first step
beforethese interfaces areremoved entirely in a futureversion of the standard. Because
of this, I have reluctantly removed the STREAMS content from this edition of the book.
This is an unfortunate change, because the STREAMS interfaces provided a nice
contrast to the socket interfaces, and in many ways weremoreflexible. Admittedly,I
am not entirely unbiased when it comes to the STREAMS mechanism, but there is no
debating the reduced role it is playing in current systems:
•Linux doesn’t include STREAMS in its base system, although packages(LiS and
OpenSS7)areavailable to add this functionality.
•Although Solaris 10 includes STREAMS, Solaris 11uses a socket implementation
that is not built on top of STREAMS.
•Mac OS X doesn’t include support for STREAMS.
•FreeBSD doesn’t include support for STREAMS (and never did).
So with the removal of the STREAMS-related material, an opportunity exists to replace
it with new topics, such as POSIX asynchronous I/O.
In the second edition, the Linux version covered was based on the 2.4 version of the
source. In this edition, I have updated the version of Linux to 3.2. One of the largest