Linux Application Development
Author: Michael K. Johnson & Erik W. Troan
Publisher: Addison Wesley
Price: $45.95 US
Reviewer: Andrew Johnson
Linux Application Development is a solid introduction to Linux programming. It does not attempt to teach programming or C, but serves as a topical reference for experienced C programmers to become familiar with the Linux programming model.
The book is divided into four major parts. Part One, “Getting Started”, contains three short chapters covering the history of Linux, licenses and copyright issues, and the availability and locations of Linux documentation, mailing lists and other books and sources of information.
Part Two provides an introduction to the Linux development environment and tools. Some of the coverage is minimal; for example, the section on the GNU debugger, gdb, contains only a short list of the essential debugger commands and references to two other books which offer tutorials on the debugger. More extended coverage is given to memory debugging tools. This includes source examples and information about creating and using libraries. There is also brief but important coverage of make, the gcc compiler and its options, system calls and common error codes.
The twelve chapters of Part Three, “System Programming”, comprise the bulk of the book. These chapters, as elsewhere, are heavily subdivided into subsections, which I found a little distracting on first reading, but quite convenient for relocating information later.
The authors give an excellent balance of breadth and depth of coverage, with chapters focusing on processes, simple and advanced file handling, directory operations, signals, job control, terminal handling, socket programming, dates and timing, random numbers and console programming. Virtually all of these topics are augmented with small source code examples.
A larger example program, ladsh, is a simplified UNIX command shell which is developed over the course of several chapters and eventually supports simple built-in commands, command execution, I/O redirection and job control. The final version of this program is 710 lines of code, and working through its development provides a good exercise in tying together some of the basic elements of Linux system programming.
Part Four describes a few important development libraries such as the S-Lang terminal library, the Berkeley database library and the popt option parsing library. This section also provides brief discussions of regular expressions, dynamic loading with dl, and the names and user databases.
Finally, three appendices cover direct I/O port access, the final source version of the ladsh program and the GNU licenses.
Overall, the book is well-organized and the writing and explanations are clear and concise. Although designed explicitly as a reference for experienced C programmers making the switch to Linux, I would recommend it as a good additional resource for anyone just beginning to learn C in a Linux environment.
Andrew Johnson is currently a full-time student working on a Ph.D. in physical anthropology and a part-time programmer and technical writer. He resides in Winnipeg, Manitoba with his wife and two sons and enjoys a good, dark ale whenever he can. He can be reached by e-mail at email@example.com.
|diff -u: What's New in Kernel Development||Sep 04, 2015|
|Android Candy: Copay—the Next-Generation Bitcoin Wallet||Sep 03, 2015|
|The True Internet of Things||Sep 02, 2015|
|September 2015 Issue of Linux Journal: HOW-TOs||Sep 01, 2015|
|September 2015 Video Preview||Sep 01, 2015|
|Using tshark to Watch and Inspect Network Traffic||Aug 31, 2015|
- diff -u: What's New in Kernel Development
- Using tshark to Watch and Inspect Network Traffic
- Problems with Ubuntu's Software Center and How Canonical Plans to Fix Them
- The True Internet of Things
- Android Candy: Copay—the Next-Generation Bitcoin Wallet
- September 2015 Issue of Linux Journal: HOW-TOs
- Firefox Security Exploit Targets Linux Users and Web Developers
- Concerning Containers' Connections: on Docker Networking
- Where's That Pesky Hidden Word?
- A Project to Guarantee Better Security for Open-Source Projects