Many books are enjoyable, not a few are educational, only a handful can be honestly termed indispensable. If you are doing serious C programming on unix, these two books are indispensable. Having them borrowed for just a day or two is enough to make me restless and frustrated, as I keep reaching for them and finding an empty space:
Unix Network Programming, by W. Richard Stevens. Prentice Hall 1990, ISBN 0-13-949876-1.
(Peering inside the cover, I notice Brian W Kernighan is listed as "Advisor" for this book series.)
Advanced Programming in the UNIX Environment, W. Richard Stevens. Addison-Wesley 1992, ISBN 0-201-56317-7.
I've virtually stopped using unix manuals for nontrivial reference purposes: I just reach for this book and flip to the index. My only complaint is that the index lists every mention of a given topic, without bold-facing the primary reference, forcing me to try several times before finding the substantive part. I pinged Stevens via email about this, and he agreed, but said the software he used doesn't allow such boldfacing. "Maybe in the next book."
These two books have it all: Clear conceptual overviews, working code examples, crisp tables summarizing which unix flavors support which calls, advice on the best practical solutions to common problems, corrections to the standard unix manuals.
1500 pages of priceless information: Buy 'em and use 'em.
Go to the first, previous, next, last section, table of contents.