Linux System Programming: Talking Directly to the Kernel and C Library
Posted on 11 July 2010 by Abidoon
Product Description
This book is about writing software that makes the most effective use of the system you’re running on — code that interfaces directly with the kernel and core system libraries, including the shell, text editor, compiler, debugger, core utilities, and system daemons. The majority of both Unix and Linux code is still written at the system level, and Linux System Programming focuses on everything above the kernel, where applications such as Apache, bash, cp, vim, Emac… More >>
Linux System Programming: Talking Directly to the Kernel and C Library
Tags | directly, kernel, Library, Linux, Programming, system, Talking


Overall this book is very good. It is particularly well written and enjoyable to read, as are all of Robert Love’s previous books.
However, it’s fairly small and could go into more detail. For example, I would have liked a discussion of edge-triggered vs. level-triggered epoll() usage. The author mentions that edge-triggered needs a different programming style. What is it? Is it better? Regarding signal handling, the author hints at injecting signals into the event loop, but how could one do it concretely? On the subject of I/O buffering, not much is said except that standard I/O exists. But I’m here for the meat, and I want to know how to implement my own I/O buffering! Pretty much every chapter ends when the fun is about to begin.
I’m still hungry. Nevertheless, every system programmer for Linux should read this book. I hope for an expanded second edition.
Rating: 4 / 5
I have to agree completely with the previous reviewer that this book lacks meat. In this book, after discussing each issue, the author typically hints that there exists a solution, but does not tell you exactly how to implement the solution. The book is sprinkled with snippets of code that are almost always incomplete, and very rarely explained.
In the Bibliography section, the author did not include two of the most important books that cover related material: 1. “Advanced Programming in the UNIX Environment,” by W. Richard Stevens, and 2. “Programming with POSIX Threads,” by David R. Butenhof. Perhaps the author did not want readers to compare his book to these two books, because in these two books, every important concept is illustrated with program code examples that are fully compilable, fully working, and fully explained!
The author could make a very significant contribution if only he could follow the examples of the above two books.
Rating: 3 / 5
If you expect the quality of the author’s other books from this book, you’ll be disappointed. It just lists system calls and their descriptions that you can find from man pages without any serious examples. It doesn’t provide any insight or thorough coverage you can find from other books such as Steven’s book (Advance Programmng in Unix environment).
From the book title, I expected the author’s insight over interface between user space program and kernel but it just looks like that it copied man pages in some order. If you want to learn sysetm programming in Linux environment, look for other books, seriously.
Rating: 1 / 5
I have been programming C/C++ professionally since 1986 and was surprised at how much I’ve learned in the first few chapters.
One of the programs that I’ve been working on is an I/O intensive conversion from a legacy platform to Linux. The original code took about 8 minutes per gigabyte of data to process. I had worked and squeezed every trick I could think of and got the application down to 10 seconds per gigabyte. From what I learned in just the first few chapters, I was able to knock an additional 3% off the application performance. (It has been mentioned that I should state that I had been unaware of fread_unlocked and fwrite_unlocked before the book … see comments for more detailed discussion).
When I finish the book, I fully intend on passing it over to one of our junior members so that they can benefit from it.
Rating: 5 / 5
Up-side
Its a very easily readable book.
Unlike other heavy weight books on system programming in this book code is very simple. All the codes are on one place no extra header files.
So if you are new to system-kernel programming, like my self, this is the book for you.
I did have problem reading kernel development books(“Linux device driver” Linux kernel Programming). But after reading this book so many things are in perspective now. I cold do advance study in kernel development.
Down Side.
Some light/sweet projects could have made this book the best.
Some socket programming examples would be nice.
Rating: 5 / 5