Buy new:
$62.85$62.85
FREE delivery:
Wednesday, March 15
Ships from: Amazon.com Sold by: Amazon.com
Buy used: $57.76
Other Sellers on Amazon
& FREE Shipping
94% positive over last 12 months
& FREE Shipping
89% positive over last 12 months
& FREE Shipping
90% positive over last 12 months
Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required. Learn more
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
The Linux Programming Interface: A Linux and UNIX System Programming Handbook 1st Edition
| Price | New from | Used from |
- Kindle
$59.99 Read with Our Free App - Hardcover
$57.76 - $62.8527 Used from $37.89 14 New from $56.00
Enhance your purchase
In this authoritative work, Linux programming expert Michael Kerrisk provides detailed descriptions of the system calls and library functions that you need in order to master the craft of system programming, and accompanies his explanations with clear, complete example programs.
You'll find descriptions of over 500 system calls and library functions, and more than 200 example programs, 88 tables, and 115 diagrams. You'll learn how to:
–Read and write files efficiently
–Use signals, clocks, and timers
–Create processes and execute programs
–Write secure programs
–Write multithreaded programs using POSIX threads
–Build and use shared libraries
–Perform interprocess communication using pipes, message queues, shared memory, and semaphores
–Write network applications with the sockets API
While The Linux Programming Interface covers a wealth of Linux-specific features, including epoll, inotify, and the /proc file system, its emphasis on UNIX standards (POSIX.1-2001/SUSv3 and POSIX.1-2008/SUSv4) makes it equally valuable to programmers working on other UNIX platforms.
The Linux Programming Interface is the most comprehensive single-volume work on the Linux and UNIX programming interface, and a book that's destined to become a new classic.
- ISBN-101593272200
- ISBN-13978-1593272203
- Edition1st
- PublisherNo Starch Press
- Publication dateOctober 28, 2010
- LanguageEnglish
- Dimensions7.25 x 2.29 x 9.5 inches
- Print length1552 pages
More items to explore
Editorial Reviews
About the Author
Product details
- Publisher : No Starch Press; 1st edition (October 28, 2010)
- Language : English
- Hardcover : 1552 pages
- ISBN-10 : 1593272200
- ISBN-13 : 978-1593272203
- Item Weight : 5.05 pounds
- Dimensions : 7.25 x 2.29 x 9.5 inches
- Best Sellers Rank: #105,613 in Books (See Top 100 in Books)
- #2 in Unix Programming
- #8 in Linux Programming
- #27 in Linux Networking & System Administration
- Customer Reviews:
About the author

I'm a New Zealand-born, Munich-based programmer, trainer, and writer who has been programming and using various UNIX systems since 1987, and focusing primarily on Linux since the late 1990s. Since 2004, have been the maintainer of the Linux man-pages project (http://www.kernel.org/doc/man-pages/), which documents the Linux and GNU C library programming APIs. As part of that work, I'm actively involved in the Linux development community, providing testing and design review of changes to the Linux kernel-user-space API. I write and deliver training courses on Linux/UNIX system programming and related areas. Those courses draw on many years of teaching and programming experience and a long and intimate association with the UNIX and Linux programming APIs to create superlative training courses. For more details, see http://man7.org/training/.
Customer reviews
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on Amazon-
Top reviews
Top reviews from the United States
There was a problem filtering reviews right now. Please try again later.
* Name: Charles
* Age: 23
* Purchased: May, 2013
*/
Organization:
[0] -> The book is divided into chapters.
[1] -> Each chapter has multiple sections.
[2] -> Each chapter ends with a summary.
[3] -> At the very end of each chapter are exercises meant to reinforce what was learned in the chapter.
This is by far one of the best computer science texts I own. I did not purchase this book as a requirement for a class (though I am a student), but I did purchase it for 'personal consumption' and to further my knowledge of programming and grow as a unix/linux systems programmer.
I have read many computer science books by many different publishers and I have to admit I really enjoy the books that I own that were printed by No Starch press. I was turned on to this book by an interest in C/C++ socket programming and systems programming in general. I have a background in web development and had been programming in C for about a year when I purchased this book.
There is something to learn for everyone in this book, regardless of how many years or decades of experience you have. The book starts with a history of Unix, Linux, and standards, and then progresses into the great detail the inner workings of linux and unix.
One of my biggest disappointments with most other programming books is that the authors use bad analogies to explain how things work, or fail to explain how things work at all and only offer a shallow glimpse into the subject. Some authors seem to go back over their books adding stupid and unintelligent filler to try and make the book longer. This book is over 1500 pages and each page is jam packed with information. In fact, I'm sure there was information that was deemed 'not important' enough to make it into this book, and thus the book references how one can find more information on a topic.
I have so many good things to say about this book, I highly recommend it to anybody with an interest in linux systems programming. You will need an understanding of C programming to get through the book. If you are looking for a book on how to program in C, this is not the book. If you are a C programmer, or are learning C, and would like a book that shows you how to apply your programming knowledge to the linux and unix operating systems, this is a book for you.
This is a book for system admins, network admins, hackers, teachers and professors, students (high school, college, or graduate), makers, computer scientists, etc.
This is one book that I know I will carry with me everywhere. Or I will buy multiple copies so that I don't have to lug around this heavy, 1500+ pg hardcover book. Definitely a book you want at home, at the office, on the plain, in the car, in the bathroom, or anywhere else you can think of reading!
This is the most well written programming book that I own!
I'm an Oracle DBA, that has always been interested in the lower-level stuff (I/O, system calls, etc.). I was researching Oracle ASM (Oracle's own volume manager), but feeling the need to get more insight into the Linux I/O subsystem. So, I went to Amazon, started searching for relevant resources, and came across this book.
I've bought thousands of dollars of technical books on Amazon, and read lots of Amazon reviews.
When I bought this book, it had 61 reviews. 60 rated the book a 5 star, and 1 rated the book a 4-star.
I have *never* seen a book rated so highly on Amazon before. A book, with incredible ratings like that, was simply unheard of.
I'm now reading the book, and thoroughly enjoying the care, the attention to detail, the comprehensiveness, the technical accuracy, the methodology, the extremely well-written English, the clear explanations, and the well-written code.
For example, on page 246, where Michael discusses Direct I/O, he says:
"If a file is opened with O_DIRECT by one process, and opened normally (i.e. so that the buffer cache is used) by another process, then there is no coherency between the contents of the buffer cache and the data read or written via direct I/O. Such scenarios should be avoided."
Wow. In just one sentence, Michael tells us one of the fundamental issues with concurrent I/O, and that by simultaneously using different I/O mechanisms, you can corrupt your files.
Another example: on page 249, Michael writes:
"When using the stdio library functions in conjunction with I/O system calls to perform I/O on disk files, we must keep buffering issues in mind. I/O system calls transfer data directly to the kernel buffer cache, while the stdio library waits until the stream's user-space buffer is full before calling write() to transfer the buffer to the kernel buffer cache."
Wow. It makes sense, when you know as much about the Linux kernel as Michael does. Need to insert an fflush() between the stdio write and the system call write. Another "Aha!" moment, just a couple of pages later. And the pages in between had one of the clearest examples of code for Direct I/O that I have ever seen. Michael even writes about the memory alignment challenges of Direct I/O.
It's simply incredible! How in the world could anyone write so much high-quality technical stuff? It's 1500+ pages of awe inspiring, amazing technical blessing. It is a fabulous example to everyone in the I.T. industry, and a very high bar for any technical books to come.
Thank you, Michael, for your incredible book.
Top reviews from other countries
This book is specific to Linux, it provides examples of C code to do X,Y,Z, detailed descriptions about the inner workings of Linux. I'm a tester, I don't need to write C (that's just my current hobby) but the knowledge behind processes are fantastic.
So far I've read only a few chapters in detail, skimmed over one or two others, and dived around in it to look some things up. Just a week after receiving it is probably too soon for a fair review of such an enormous book, but Michael asked me if I would consider writing one (after I contacted him -- I don't know him personally), and it's the least I can do to thank him for what I can already tell is going to be a stupendously useful book.
From its uncluttered no-nonsense title and cover design, right down to its nitty-gritty technical details, it's obvious that this is a clear, well thought out, and well written book by someone who knows their subject matter inside and out. That's no surprise: Michael Kerrisk is maintainer and a major contributor to the Linux man-pages project. But let's be clear, this book isn't just a bunch of man pages glued together and given a cover!
Despite its large size (over 60 chapters, 1500+ pages) and level of detail, this is a surprisingly readable guidebook for UNIX system calls with a particular focus on Linux. The chapters are arranged such that they can be read in order with minimal forward-referencing. Topics covered range from the history of UNIX and fundamental systems concepts, through file i/o and file systems, processes & threads, IPC, up to advanced socket techniques and alternative I/O models. The book has a fairly comprehensive (although not exhaustive) index. The chapter list at man7.org provides a complete picture. The IPC chapters by themselves look as good as any other book I've seen on the subject.
The topics are covered in enough detail to make the book useful as a reference, but retaining a readable style throughout. It does a good job of pointing out some of the UNIX and C library quirks that might get lost in the detail of pure reference material. The book doesn't stray too far from the main focus -- the system calls themselves -- and provides references to other sources that cover related topics in more detail. There are plenty of diagrams and examples, including source code (available from man7.org). Source examples tend to be fairly simple illustrations of individual or related system calls. The book is not too code-heavy and doesn't just go through the motions of listing every possible call and parameter. After all, you already have the freely-available man pages for that. (It's occasionally useful to have a BASH prompt to hand while reading it.)
This isn't a beginner's book: a certain level of basic UNIX/Linux knowledge and a good grasp of C programming is a pre-requisite to a book like this. There is a good balance of introductory and advanced material without "dumbing down" or sacrificing of important detail.
The chapters on sockets, while quite short, cover a surprising amount of detailed ground, although a discussion of some of the more important TCP options available with setsockopt() is notably lacking. To be fair, this isn't a socket-programming book, and references to other sources of information are provided. However, I did think this was an odd omission considering the level of detail provided elsewhere in the book.
There are some exercises at the end of chapters with selected answers provided. I think this is one area that could be expanded and improved for readers who might want to treat the book like a `self-study' course or use it in an educational environment.
Any book this size with this level of technical detail inevitably has some errors, and it was after reporting one (minor) mistake that the author asked if I would consider posting a review. However, I was apparently only the second person to report one! Considering how many eyes must have glanced over this book already, that surely says something about the book's accuracy. The book has its own web page on the author's site (man7.org) where there is an errata section and a list of kernel changes since the book was released. It looks like this book will be well supported, even as the Linux kernel continues to march on its evolutionary path.
As you can probably tell from the overall tone of this review, I'm very pleased with my purchase. I plan to read this cover-to-cover over the next couple of months, and I will probably get a second copy on expenses to sit on my desk at work! I may post a follow-up review later, once I've had more time to read and reflect.
I would recommend this book to any Linux programmer.
However, I dislike the binding, which does injustice to an otherwise outstanding book. It is listed as a hardback, yet is a glued paperback with hard covers. Amazon should should stop misrepresenting "perfect bindings" as hardbacks/case bindings.









