A book by W. Richard Stevens about writing C programs under UNIX that can really get the most out of the OS. It touches on everything a UNIX developer would want or need to know in the process of writing nearly anything, except GUIs.
Mr. Stevens knew how to write, and it's a damned shame he's dead. He explains his material very well, turning what could be excessively dry and incomprehensible technical topics into readable prose with apposite diagrams and well-crafted code interspersed throughout.
This is the kind of technical book you take to bed with you.
To appreciate this book, you should have a good knowledge of C and UNIX. This is not a tutorial on either, although it does explain some basic concepts of each. There's also no information on using the many scripting languages or, indeed, any information at all on using anything but C. C was, and is, the best way to access the good stuff of any UNIX-like OS, and this book is all about accessing that good stuff in the most effective way possible.
The book differs greatly from "The UNIX Programming Environment". For one thing, it's freaking huge: My hardbound edition has 744 pages, including the index. This indicates a distinct difference in aim: "Advanced Programming" is a reference on the topics it covers, not merely an introduction to a programming environment and mindset, and it aims at completeness. For another thing, it isn't about administering a UNIX box, it's about programming a UNIX box: It doesn't go into shell syntax or the commands accepted by ed. It's more concerned with IPC and creating daemons.
It is, sadly, somewhat out of date: Written in 1992, it just barely predates 4.4BSD and long predates Linux's relevance to anyone other than the earliest of early adopters. It comes after C was standardized, however, and after POSIX.1 (the only POSIX relevant to the text), but before the Single UNIX Specification. The book is quite good when it comes to differentiating between the standards and what the common implementations actually do.
The book, as mentioned, contains source code. Lots and lots of well-written source code, as a matter of fact. Approximately 10,000 lines, the author figures, and none of it bloated. Almost every function and feature the book covers is demonstrated with a complete program, which can be a huge help in figuring out just how it's supposed to be used. Of course, actually typing in all that code is a hassle, so there is a webpage (http://www.kohala.com/start/apue.html) that hosts compressed tarballs containing all of the examples from the book and makefiles that might enable you to actually build them on your system. (As of November 30, 2004, the latest tarball was tested under Red Hat Linux 6.0.) Speaking from experience, a reasonably knowledgable user can get the programs to build with a minimum of hassle. (Trying to build them under Cygwin might make an interesting torture test for the emulation layer.)
All in all, this book is one you really and truly need if you want to do serious programming on a UNIX system.