Advanced Programming in the Unix Environment

Advanced Programming in the Unix Environment is a computer programming book by W. Richard Stevens describing the application programming interface of the UNIX family of operating systems. The book illustrates UNIX application programming in the C programming language.

The first edition of the book was published by Addison-Wesley in 1992. It covered programming for the two popular families of the Unix operating system, the Berkeley Software Distribution (in particular 4.3 BSD and 386BSD) and AT&T's UNIX System V (particularly SVR4). The book covers system calls for operations on single file descriptors, special calls like ioctl that operate on file descriptors, and operations on files and directories. It covers the stdio section of the C standard library, and other parts of the library as needed. The several chapters concern the APIs that control processes, process groups, daemons, inter-process communication, and signals. One chapter is devoted to the Unix terminal control and another to the pseudo terminal concept and to libraries like termcap and curses that build atop it. Stevens adds three chapters giving more concrete examples of Unix programming: he implements a database library, communicates with a PostScript printer, and with a modem. The book does not cover network programming: this is the subject of Stevens's 1990 book UNIX Network Programming and his subsequent three-volume TCP/IP Illustrated.

Stevens died in 1999, leaving a second edition incomplete. With the increasing popularity and technical diversification of Unix derivatives, and largely compatible systems like the Linux environment, the code and coverage of Stevens's original became increasingly outdated. Working with Stevens's unfinished notes, Stephen A. Rago completed a second edition which Addison-Wesley published in 2005. This added support for FreeBSD, Linux, Sun's Solaris, and Apple's Darwin, and added coverage of multithreaded programming with POSIX Threads. The second edition features a foreword by Dennis Ritchie and a Unix-themed Dilbert strip by Scott Adams.

The book has been widely lauded as well written, well crafted, and comprehensive. It received a "hearty recommendation" in a Linux Journal review.

OSNews describes it as "one of the best tech books ever published" in a review of the second edition.

Editions

 * Advanced Programming in the UNIX environment, first edition, W. Richard Stevens, Addison-Wesley, 1992, ISBN 978-0-201-56317-7
 * Advanced Programming in the UNIX environment, second edition, W. Richard Stevens and Stephen A. Rago, Addison-Wesley, 2005, ISBN 978-0-201-43307-4
 * Advanced Programming in the UNIX environment, third edition, W. Richard Stevens and Stephen A. Rago, Addison-Wesley, 2013, ISBN 978-0-321-63773-4