My understanding is that there is no such a thing as 'Linux Programming'. 'Programming under Linux' perhaps, 'C Programming' perhaps, but 'Linux Programming', no. Linux is an operating system, not a programming language.
I have mixed feelings also about what this book is trying to achieve. In nearly 890 pages the authors attempt to cover a staggering breadth of material from setting up a development system to software licensing, through version control and package management. I cannot but feel however that no real depth of cover is achieved.
Supposedly there is a source code CD, but there was none my paperback copy. The publisher's web site (
www.samspublishing .com) does feature a relevant source code
tar.gz, but when I unpacked it (it creates a directory per chapter), several chapters were missing. Amongst these are some of the more interesting; chapter 24 on ncurses and chapter 25 on X Windows and others. Code in a few of the directories I tested executed fine after a simple make command. Others failed with missing headers, but that is understandable, as I cannot guarantee my system was equipped with all the standard headers. The emphasis is on C and not C++, the Bash shell is also explored. Some, obviously old, emacs backup files are left lying about, which might be confusing for the less experienced. I have no fault with the code examined. It seems well structured and self-documenting.
As an applications programmer, when I approach a generalised programming book like this I have a number of objectives in mind; does it cover debugging, does it cover the generation of input forms (in particular data validation, especially on dates), does it cover windowing and menus, does it cover databases. With the exception of the latter (and date validation), the current volume does address all these, but not in any depth. A lot of energy is expended on what I call, much morerarefied, systems programming; TCP/IP sockets, UDP, process control and signal handling. A lot of this material is far from unique to Linux and is covered in a lot more depth in other Unix programming books.
I don't want to be negative and this book could well have an appreciative market (this is a second edition). If you want an overview of some of the more esoteric functions of Linux then it could well be worth looking at. For the keen programmer some chapters may provide a jumping off point to more comprehensive reading.