31 of 31 people found the following review helpful
on April 26, 2004
Don't judge a book by it's cover, especially this cover, with the cheesy lightsaber which screams, "secrets of the Unix Jedi". Read the the lines, "Linux" and "Fundamentals" on the cover, and that is what you need to know.
If you are familiar with the classic "Advanced Unix Programming" you will be familiar with what this book covers and appreciative of the update. In short, this book covers the fundamentals of shell programming with C; files, directories, signals, memory allocation, process control, permissions, that sort of thing. It does not cover network programming or X11 GUI programming.
What I liked about it was primarily that it imparted experience. For example the section on creating temporary files pointed out both good and bad ways to write the same functionality. The text was expository and informative. Where Advanced Unix Programming was a little dry and stiff in tone, this book is a little heftier, goes into more detail, and is written in a more experiential and friendly manner.
There is a lot to like about this book. If the subject, within it's constraints, interests you, then you should get it. If only to broaden your depth of understanding as to how Unix works and how to write programs for it. If you are looking for books on network programming, xml, multi-threading, web serving, or X11, you should look elsewhere, but you should probably still look at this book to bone up on 'Linux' 'Fundamentals'.
27 of 27 people found the following review helpful
on January 25, 2005
Linux Programming by Example: The Fundamentals is a great book that covers three main concepts in Linux programming: files, processes and debugging. In each part the author explains and gives several examples of functions, systems calls and APIs that will help the Linux programmer. He also includes several real world examples of how these concepts are implemented. Here are the some things that I found interesting:
The Good: 1) This book really focuses on the use of standards and good program design. Right from the beginning, the author goes out of his way to make the reader aware of standards from ISO and POSIX and how they apply to good programming and design. Along this line I also like that the author explains the benefits of - and promotes - the use of Gnu software. Being an avid Gnu user myself (as most Linux users are) I agree that Gnu software is generally better software.
2) I feel that knowledge is power, and the author goes along with this idea by showing how some things should *not* be done. He often points out several functions that are available but should be avoided. I appreciated this, and feel that it makes the reader an all-around better programmer. The author also frequently gives extra information and history which helps explain why things are the way they are. This was especially useful when explaining mount points and types of file system.
3) I liked the fact that the author uses real world examples to demonstrate the ideas being presented. I really appreciated the fact that he uses V7 code (older, smaller and less comlex code) to demonstrate his examples. This allowed me to be able to see how the features were implemented in simple code, without being overwhelmed by the modern equivalents. A great example is the V7 echo program - only 23 lines!
The Bad: There weren't too many things that I didn't like about this book, but if my arm was twisted I would say the following: 1) This book is called *Linux* Programming but really it is about Unix programming. I know they are similar, and maybe I am splitting hairs here, but the title could really be *Unix* Programming. Most of this stuff is generic Unix programming, and the author points out the special exceptions not only for Linux but for other Unix variants as well - such as BSD.
2) Don't confuse the word "Fundamental" with "Beginning." This book really isn't for beginning Linux programmers, but rather it teaches basic (or fundamental) concepts that Linux programmers should know and use. The reader needs to be moderately familiar with the C programming language if he or she is to be edified.
A great read, with some excellent examples of well written Linux programs. If you are interested in moving beyond basic Linux programming then you should definitely pick up a copy of this book!
15 of 15 people found the following review helpful
I loved this book. It's earned an honored place on my bookshelf, and I'm going to recommend it to people who need information about Linux and UNIX development.
Many computer books are practically obsolete before they ship: within a few months, "Learn Foomatic 4.3 in 21 Days" is in the bargain bin at the Dollar Tree. Some books have longer lives, and a few can remain useful for years. "Linux Programming by Example" (LPE) is in this last category; this book can stand alongside Steven's "Advanced UNIX Programming" as an essential tutorial and reference.
LPE covers everything you'd expect (working with files, processes, signals, users) and some things you might not (internationalization). But it's this book's voice and unique perspective that make it truly a gem. LPE is written in a clear, friendly, authoritative style. As I read, I often felt that I had gained a new understanding of things I've known for years.
The long and twisted history of UNIX has given rise to multiple competing APIs. Perhaps the greatest thing about this book is the way that Robbins cuts through these thickets, explaining your choices, pointing out the best alternatives, and explaining why they're the best. LPE's modern vantage point means it can cover V7, BSD, POSIX, and GNU APIs. The chapter on signals alone is worth the purchase price of the book for the way in which it clearly compares and contrasts the various signal APIs.
7 of 7 people found the following review helpful
on May 23, 2004
I am very impressed with this book. Arnold covers the basics of Linux and Unix programming in a clear, easily-understood fashion. He has brought a wealth of programming experience to the job, and it shows -- the comments on portability, for instance, have a certain world-weariness about them that makes it clear that the lessons were hard-won.
I thought the choice of using Unix 7th edition source code was inspired. The code is elegantly written, and comprehensible enough to be used as a teaching aid.
I would not hesitate to recommend this to anyone looking for an introduction to programming on Linux or Unix.
3 of 3 people found the following review helpful
on April 26, 2004
This is a great introduction to Unix systems programming.
I like the way concepts are illustrated with code from widely
used programs, along with good tips on portability. The sections
on directory traversal and signals were particularly relevant to
some of my work. Fine writing!
2 of 2 people found the following review helpful
on March 20, 2006
I learned about this book from its sister book, Linux Kernel Primer: A Top-Down Approach for x86 and PowerPC Architecture. While the kernel book is not a good one at all, this one is a true gem. The writing is clear, lucid, and the examples are from the real world and thoroughly explained. In contrast, the kernel book gives overly broad and general introduction to a subject and then dives into the source code with disconnected commenting; there is such a big gap between the intro and the source code that it's not readable at all.
The auther Arnold Robinns also wrote a few other great books, including Learning the vi Editor and Learning the Korn Shell. With the achievement of this book, he ranks near the great, late Richard Stevens in terms of writing quality.
3 of 4 people found the following review helpful
on December 7, 2009
This is a fantastic book about how to program in the GNU style. In other words, this book is a great companion to the GNU coding standards, and it provides a good window into actual programming practices. Reading GNU code and Ancient Unix code will be much easier to understand after reading this book. I really liked how it compares the old Unix style with the GNU style and uses examples to suggest the best practices in programming.
The biggest weird thing I noticed about this book is that it is yet another example that shows calling the GNU System "Linux" is a terrible choice of words. This book is called "Linux Programming..." and therefore (a) you might think it is about programming Linux (the kernel) which it absolutely is not (it uses no kernel-code examples) and (b) it strongly advocates following the GNU standards and using GNU extensions, GNU libraries and GNU style! The whole point of this book is to compare how to code on a modern GNU system with an older (more limited) Unix system. It explains at the core technical level what "GNU's Not Unix" really means.
Yet another poorly-titled book that points out the difference between calling the system "Linux" and GNU/Linux is not just a matter of politics or giving credit. It is a technical issue, and the editors' choice clearly reflect their lack of insight on the subject (it belongs in a series with other poorly-titled books). The author even spells this out clearly in a section on "Why GNU code is better."
Nevermind the title; get the book.
1 of 1 people found the following review helpful
on January 7, 2007
Format: PaperbackVerified Purchase
This is a good introductory book for Linux OS related programming concepts including memory management, files, IPC, signals and debugging. It does explain the concepts quite well and the code illustrations are very helpful. Its debugging and internalization chapters are noteworthy. As mentioned by others, this book does not cover threads and sockets.
It could be better to provide more complete coverage of the topics such as IPC and memory management. For example, the IPC chapter is limited to pipes and fifos (they are not even explained depth enough).
In short, I strongly recommend it as an introductory book for the topics covered.
3 of 4 people found the following review helpful
on January 6, 2005
This is an exceptionally fine book.
Robbins has supplied the reader with a vast number of
programs and a lot of elucidation. This is a primer in
Linux programming, but also serves as a tract on UNIX
programming. The illustrations stem, for the most part,
from actual GNU and Linux code.
This is an invaluable resource for those converting from
another system to Linux.
on April 26, 2013
Format: PaperbackVerified Purchase
5 stars just because of the reason below.
I read the whole book through, found two useful examples(topic) to resolve two of my issues.