|New Reviews| |Software Methodologies| |Popular Science| |AI/Machine Learning| |Programming| |Java| |Linux/Open Source| |XML| |Software Tools| |Other| |Web| |Tutorials| |All By Date| |All By Title| |Resources| |About| |
Keywords: Linux, Unix, POSIX, C programming Title: Linux Application Development (2nd edition) Author: Michael K. Johnson and Erik W. Troan Publisher: Addison Wesley ISBN: 0321219147 Media: Book Level: Introductory Linux/Unix for C programmers Verdict: A solid and useful book for getting started in Linux programming |
This book, by a pair of authors with excellent Linux development credentials, aims to provide a thorough grounding in Linux programming for C programmers. Assuming little prior knowledge of programming on Linux (or Unix for that matter), the book does assume competency in C programming and some familiarity with the platform. Obviously if you have no experience of Linux or Unix then you'll need to gain some first before attempting to port code across. On the other hand if you're coming from a Unix background then you'll appreciate the way the book is very much focused on Linux as part of the Unix family, complete with POSIX and BSD references.
Structured in four parts: 'Getting started', 'Development tools and environment', 'System programming' and finally finishing with 'Development libraries', the book covers a wide range of topics to a depth sufficient to get the reader fully engaged and coding.
The heart of the book is in the system programming section, which covers the Linux kernel and system libraries. Topics include processes, basic file and directory handling, signals, advanced I/O, job control, terminals and pseudo-terminals, sockets, time, random numbers, virtual consoles, the Linux console and concludes with a chapter on secure programming. That pretty much covers the core material required to develop effectively on the Linux platform.
This isn't to say that the material in the other sections of the book aren't interesting. The getting started chapters are about familiarisation with the environment, including looking at the history of Linux and at the nature of open source software licensing. The development tools section looks at editors (Emacs and vi), make, gcc, the GNU C library, memory debugging tools (including Electric Fence), how to create and use libraries and an overview of processes and system calls. This is all useful stuff, particularly the development tools section, but it's just preparation to the system programming section.
The final part of the book builds on the previous three sections by looking at particular libraries, including string matching (including regular expressions), terminal handling with S-Lang, hashed data structures, command-line parsing, dynamic loading at run-time and user identification and authentication.
Code is used throughout the book, and there are some useful example programs that are developed across the different chapters. These include a simple (but not simplistic) Linux shell and a simple grep program. The sample code is useful not only because it illustrates the topics covered in the text, but also because they provide small but complete programs that can be downloaded and experimented with.
The writing is on the dry side, but then so are the flashes of humour on display (section titles include Having Children, Killing Yourself and Killing Others). The text also includes a fair chunk of reference material, which makes the book useful to have to hand but it doesn't make it any easier to read.
This book covers the same kind of ground as Linux Programming By Example, by Arnold Robbins. That book was easier to read but in terms of technical content the books are fairly evenly pitched. Both books are excellent.
'Linux Application Development' is a solid and useful book for getting started in Linux programming and gets a TechBookReport recommendation.