25 of 27 people found the following review helpful
on July 3, 1999
This book was written with an easy to read style, and the content is excellent. I'll forgive them for not including anything related to X11 programming, but they mention that their reason was that X Windows programming is not specific to Linux, and this is a *LINUX* programming book. Well fine, but I still have to find a book on X Programming. Imagine a book on Windows NT Programming that skipped all the GUI parts. I guess the Unix crowd is 10 years behind the NT crowd in acceptance of GUIs.
Reading this book made many of the arcane details of Unix architecture make sense, finally. I have read many Linux books, and most are long on technical drivel and short on enlightenment. If you are enlightened, you don't need the drivel, because the technical details are easy to absorbe and remember once they make sense.
This book excels at making sense of Linux. It should have been called "Making Sense of Linux Application Development", because that's what it is. You could probably get a lot out of it, even if you don't know C very well or you aren't all that interested in C programming in Linux. The explanations are clearly presented, and the chapters stand alone, and are a great reference material, as well as interesting general reading for those interested in the internals of Linux.
This book explains a lot of services that the kernel provides, especially in regards to the Linux process model and unix filesystems, as well as interprocess communications (Unix domain sockets) and network programming (TCP/IP sockets).
CAVEAT: This shouldn't be your *first* Linux book. There's a lot of material besides the writing of the code that you need to cover first. To get you comfy in the classic Unix shell environment read Hands On Unix, by Mark Sobell.
13 of 13 people found the following review helpful
on October 12, 1999
Is a usefull book once you download the list of typo's in the book(from their all but hidden under a rock website). It was very troublesome to find so many things that did not work. A few needed help even after you made the recommended corrections. Already being a c programmer I was able to figure things out and get basically everything to work just fine with a little hacking, but a newbie might throw his computer out of the window in frustration. Lots of books have had typo's lately. I always get the phone call from a worried friend wondering what they are doing wrong only to find out that it was a simple mistake of the program never being tested before being printed in the book. Oh well, it's in a few of the newer O'Reily's even. It's just a shame, i'm glad I learned how to code back in the dark ages when books were tested before they were shipped.
35 of 41 people found the following review helpful
on July 13, 2000
Unless you want a full documentation on the history and licensing of Linux, don't bother with this book. All the "application development" sections are nothing but lists. They are vast lists, but there are no explainations with them (I mean to the point that he drops function names without telling you even so much as their signature.) It seems as though the author knows what function calls and macros are available in the Linux API but has no idea what they do, and therefore neither will you. The only reason I give this book two stars is for its GNU section (but you can buy "Programming with GNU Software" for that). You are much better off with "Advanced Programming in a UNIX Environment" or, for a beginner, "Beginning Linux Programming". As a final thought, I really wish that someone could write a book on Linux that could parallel Stevens' UNIX book.
10 of 10 people found the following review helpful
on February 14, 2005
The Linux operating system provides a sophisticated framework for running programs. Within its sturdy covers, Linux Application Development by Michael K. Johnson and Erik W. Troan provides much of what intermediate to advanced programmers need to know to take advantage of that framework.
The book is divided into four major parts: Getting Started, Development Tools and Environment, System Programming and Development Libraries.
Part 1 - Getting Started, is a very high-level overview of Linux itself. The three chapters cover barely 20 pages, and discuss the history of Linux, its licensing, and the online documentation.
Part 2 - Development Tools and Environment gets more detailed, but ends up as a medium-level view of what tools you might use to actually create and debug your application. Six chapters covering about 75 pages discuss editors (Emacs and vi), make, the GNU debugger gdb, tracing, gcc options, glibc, memory debugging tools, libraries, and the environment. Each chapter feels a little light-weight except for the one on memory debugging tools.
If the first two parts seemed to just skim the surface somewhat, Part 3 - System Programming definitely dives into the deep end of the pool. Part 3 has 13 chapters and covers 450 pages, almost two-thirds of the total book. My major complaint with Part 3 is that related chapters appear to be separated by others. Five major groups of functionality are covered.
The Unix/Linux process model is explained in detail in Chapter 10, and should be followed by chapter 15, which goes into job control. File handling is introduced in chapter 11, expanded in chapter 13, and directory handling is covered in chapter 14. Interprocess communication is discussed in chapters 12 - Signal Processing (discussing simple semaphores) and chapter 17 - Networking with Sockets, which extends IPC across the network. User interfaces are covered in chapters 16 (terminals and pseudo-terminals), 20 (virtual consoles), and 21 (text-based interfaces for the Linux console). Timers, encryption, and writing secure programs are the topics of chapters 18, 19, and 22.
Finally, Part 4 covers the various development libraries commonly available to the programmer. Chapter 23 covers the ins and outs of string handling and regular expressions. Using S-Lang to handle the terminal is the main interest of the next chapter. Chapter 25 discusses database interfaces, specifically qdbm, which is licensed under the LGPL. Traditional option functions getopt and getopt_long and their cousin on steriods popt are detailed in the following chapter. The final two chapters cover dynamic loading of shared objects with the advantages that provides, and user identification and authentication, covering id-to-name translation, and Pluggable Authentication Modules (PAM).
This book has a lot of information packed within its covers, When programming, one needs a number of reference books at hand, and Linux Application Development should definitely be one of the handiest. My only concerns were how the first two parts seemed skimpy compared to the rest of the book, and the part on System Programming could have been laid out better. That said, Linux Application Development rates a 4 out of 5.
9 of 9 people found the following review helpful
on April 20, 2003
Johnson and Troan is a great book for Linux programmers. It covers in good detail a wide range of topics in system programming, including process management, file and directory structures, linux development tools, signals, and terminal programming. Network programming is lightly covered, but network programming is a very large topic and is covered well in other books. Threads are also not covered, but again, threaded programming is a complex topic and is covered elsewhere. Johnson and Troan contains a long running example program, ladsh, which is a shell. This is a great example because developing a shell requires a high degree of interaction with the kernel and file system. The book does a great job of accurately covering the function prototypes for the core system library, including the many flags passed as parameters. Overall this is an excellent book, and it is one of the most frequently used programming texts on by shelf. I highly recommend it.
8 of 8 people found the following review helpful
on November 29, 2001
This book does a decent job introducing basic concepts of unix (system) programming. It would be great for a newcomer to linux/unix. However, the unix/linux specific information is very incomplete - searches on google for related topics often yield more useful leads. On the system programming aspects, beyond the basics, this book is of no comparison to classics like Stevens' "Advanced Programming in the UNIX Environment". It only skims various system calls without detailed description of what's going on behind the scene, which most seasoned unix programmers would consider important. For newcomer who prefers a more rigorous approach to learning unix programming (but not as detailed as Stevens'), I would recommend Robbins' "Practical UNIX Programming: A Guide to Concurrency, Communication, and Multithreading".
5 of 5 people found the following review helpful
on September 11, 1999
Most Linux books on market now are aiming users or beginning programers, but this is the book for real Linux programmers. You can find many things you can not in other Linux books.
9 of 11 people found the following review helpful
on January 12, 2000
This should be one of the best Linux & UNIX programming books available in the market. It provided & covers most Linux's system calls in such detailed, although not as good as "Advanced Programming in UNIX Environment", which does a "perfect (or almost)" job (with almost twice the size of this book, though).
About programming the X Windows, I think it is OK to exclude the topics about X from this book. Since this book is about programming in Linux environment, not making the X application. (Like Stroustrup's "The C++ Programming Language" didn't even mention the MFC..)
Finally, I, personally, think that "This is the book that Linux & UNIX programmers should have consider about having it".
4 of 4 people found the following review helpful
on December 6, 2004
I'm one of the authors, so take the 5 stars with a grain of salt...
Amazon's database is a bit confused about the two editions of Linux Application Development. Both are hardcover, but the second edition was released in November, 2004. The version with a mostly white color is the second edition; the cover of the first edition is mostly yellow. Hopefully this will get fixed; in the mean time I suggest you look at Addison Wesley's site ([...]) for information on the second edition.
5 of 6 people found the following review helpful
on July 20, 1999
The book was a big disappointment after reading all the reviews. I found the content to be complete, but I would like to see more examples. Also the examples they have were not explained well.