Linux Application Development

This book 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.
  • Author: Michael K. Johnson & Erik W. Troan

  • Publisher: Addison Wesley

  • Price: $45.95 US

  • ISBN: 0-201-30821-5

  • 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


White Paper
Linux Management with Red Hat Satellite: Measuring Business Impact and ROI

Linux has become a key foundation for supporting today's rapidly growing IT environments. Linux is being used to deploy business applications and databases, trading on its reputation as a low-cost operating environment. For many IT organizations, Linux is a mainstay for deploying Web servers and has evolved from handling basic file, print, and utility workloads to running mission-critical applications and databases, physically, virtually, and in the cloud. As Linux grows in importance in terms of value to the business, managing Linux environments to high standards of service quality — availability, security, and performance — becomes an essential requirement for business success.

Learn More

Sponsored by Red Hat

White Paper
Private PaaS for the Agile Enterprise

If you already use virtualized infrastructure, you are well on your way to leveraging the power of the cloud. Virtualization offers the promise of limitless resources, but how do you manage that scalability when your DevOps team doesn’t scale? In today’s hypercompetitive markets, fast results can make a difference between leading the pack vs. obsolescence. Organizations need more benefits from cloud computing than just raw resources. They need agility, flexibility, convenience, ROI, and control.

Stackato private Platform-as-a-Service technology from ActiveState extends your private cloud infrastructure by creating a private PaaS to provide on-demand availability, flexibility, control, and ultimately, faster time-to-market for your enterprise.

Learn More

Sponsored by ActiveState