This book was written with an easy to read style, and the content is excellent. I'll forgive them for not including anything related to X11 programming, but they mention that their reason was that X Windows programming is not specific to Linux, and this is a *LINUX* programming book. Well fine, but I still have to find a book on X Programming. Imagine a book on Windows NT Programming that skipped all the GUI parts. I guess the Unix crowd is 10 years behind the NT crowd in acceptance of GUIs.
Reading this book made many of the arcane details of Unix architecture make sense, finally. I have read many Linux books, and most are long on technical drivel and short on enlightenment. If you are enlightened, you don't need the drivel, because the technical details are easy to absorbe and remember once they make sense.
This book excels at making sense of Linux. It should have been called "Making Sense of Linux Application Development", because that's what it is. You could probably get a lot out of it, even if you don't know C very well or you aren't all that interested in C programming in Linux. The explanations are clearly presented, and the chapters stand alone, and are a great reference material, as well as interesting general reading for those interested in the internals of Linux.
This book explains a lot of services that the kernel provides, especially in regards to the Linux process model and unix filesystems, as well as interprocess communications (Unix domain sockets) and network programming (TCP/IP sockets).
CAVEAT: This shouldn't be your *first* Linux book. There's a lot of material besides the writing of the code that you need to cover first. To get you comfy in the classic Unix shell environment read Hands On Unix, by Mark Sobell.