M. Tim Jones
1 Great introduction to Linux Application programming
Written for application developers, this book is a great source of information on working with the GNU/Linux architecture and process model. If you know something about programming but want to know how to use those skills in the GNU/Linux environment this is one of the best books available. The coverage is thorough and filled with coding examples to illustrate the concepts. To make your life easier it even has all the coding examples included on a CD in the back of the book. Areas examined include the GNU compiler, automake, shells, scripting, creating and using libraries, named pipes, semaphores, sockets, and shared memory. The book wraps up with a section on debugging and testing your application. GNU/Linux Application Programming is an excellent source of information for the new to intermediate GNU/Linux programmer and highly recommended.
2 In Between the Program and the Operating System
This book fits into an interesting and often neglected spot between the operating system (Linux) and the programming language (C). There are lots of books on both C and Linux. This one ties the two areas together.
The C language is a general language with applications on many operating systems. Linux, of course is one operating system that can use C. Inbetween the two lie the areas of taking the raw language and turning the code into an application that can actually be of use to someone.
Contained within the GNU/Linux system are many software packages to establish the programming environment. There's the compiler and operating system. But more than that are systems to optimize the resulting code, to combine the program you wrote with other standardized routines from the system. These other utility programs have names like gcov, gprof, automake and so on. To the newcommer to GNU/Linux, there is a bewildering array of names (that only kind of make sense) for programs that ease your development task.
In addition there's discussion on various programming concepts such as the Linux file system, programming threads, piped, sockets and so on. Again, these are areas that are part of the standard GNU/Linux system but which are discussed here in ways to make them useful to the applications developer.
This is a carefully positioned book that will be of great help to the beginning developer.