

⚡ Unlock the ultimate Linux system programming bible—don’t get left behind!
The Linux Programming Interface is a definitive 1500+ page handbook authored by Michael Kerrisk, the Linux man-pages maintainer. It offers an in-depth, expertly curated guide to Linux and UNIX system calls, IPC, file systems, and socket programming across 60+ chapters. Combining authoritative detail with clear, practical examples, this book is a must-have reference for professional Linux programmers seeking to deepen their mastery and stay ahead in system-level development.
| Best Sellers Rank | 394,136 in Books ( See Top 100 in Books ) 8 in Linux & Unix Programming 40 in Linux Distributions 466 in Computer Information Systems |
| Customer reviews | 4.8 4.8 out of 5 stars (725) |
| Dimensions | 18.42 x 5.72 x 24.13 cm |
| ISBN-10 | 1593272200 |
| ISBN-13 | 978-1593272203 |
| Item weight | 2.44 kg |
| Language | English |
| Print length | 1552 pages |
| Publication date | 6 Nov. 2010 |
| Publisher | No Starch Press |
D**R
A "must have" for any Linux programmer
Last week I got my grubby mitts on a clean, white and shiny new copy of The Linux Programming Interface ("A Linux and UNIX System Programming Handbook") by Michael Kerrisk. 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.
R**T
Absolutely Superb
Extremely extensive and detailed but succinct and well written with no ambiguous language. In fact it seeks out and clears up any ambiguity in the subject matter, and clarifies its own use of terms where there could be doubt. Includes not just the details of the Linux Interface but also common issues and pitfalls faced by programmers of that subject. States its limits and includes links to other texts which may help those needing to go beyond those limits. Very easy to navigate via the extensive 'Contents' section, and clear 'Overview' section on each subject explaining how it will address the topic. Includes good internal referencing so you can be aware of and locate other relevant information. The style is direct and to the point, with no lame jokes or historical content except where that might be helpful, such as explaining a convention or naming scheme. Has plenty of short coding examples and C library references, but only for useful illustration, no long pointless text you would never type in. Also, read the 'About the Author' in the book description; his experience is pretty compelling. Despite its 2.4kg weight it will actually be a weight of your mind as you tackle the Linux Interface.
M**P
(hardback) Reasonably comprehensive, clear and well explained - excellent code examples
Great book, pulling together a raft of information I had in lots of separate places. Very clear, very well explained, and the author has the code examples online which are clean, simple and easily built. It is a really relevant book for anyone writing a significant amount of Linux application (userspace) code. This book will not teach you C and will assume you have some prior experience in writing C code. Very much command line - this is a book about how programs communicate with each other and the Linux system, not about graphical user interfaces. It is the fundamentals you need to know to write solid/reliable Linux applications. Physically this is big book, and certainly not something to want to constantly carry around with you - but it is well structured enough to be useful for quick reference, and even a reminders of Linux facilities available to you to "solve a problem". As technical books go - it is very readable. So the obvious downside is the cost, but in my mind it was worth it for something pretty well up to date and although the code examples are free to download, in reality in buying the book you are compensating the author for the effort he has put in making those clear examples.
W**E
Beautifully written book
Beautifully written book, a model of clarity and succinctness, equivalent to K&R's C Programming Language book, but surprisingly readable from front to back too. I've been working with Unix and Linux since both became available in the UK and I think they're both beautiful from an engineering viewpoint, but often they're not well explained from a systems programming perspective. This book - along with W. Richard Stevens' book, "Advanced Programming in The Unix Environment" - are the best available on the subject in my humble view. I particularly like Kerrisk's because he obviously thought long and hard about the best way to present the material in a narrative format in the opening part of the book where he walks through key concepts, but then he shows the same consideration in each subsequent chapter where he does more of a deep-dive into each kernel subsystem, meaning that it's a book that readers can return to again and again when they want to explore a topic in more depth. It's also a very comprehensive programmer's guide - the coverage is excellent, and the material is bang up-to-date.
S**A
Indispensable Reference
Top in the list
J**R
What an incredible resource for the Linux community! 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.
T**O
Perfeito! Produto chegou 14 antes do prazo dado pela Amazon. Sem qualquer avaria.
R**K
I have read a lot of technical books (principally windows and c++ related) and really I have NEVER seen a technical book as well written as this one. The book has all the quality I always wanted: 1) it must be thorough: after reading you shouldn't need to read other book or search the web to complete your comprehension: every info you need must be there. 2) it must be clear: there should never be any ambiguity in expressions or situation that requires you to test the info on specific example. You must be able to understand it on first the first reading 3) it must be a pleasant journey: the order of the information should match the normal flow of your thinking and interrogations. The author should guide you so that when you think: "I wonder what would happen in this different situation", the next paragraphs do address that interrogation you have. Again this book does all this extremely well. There is simply no equivalent in the windows world. It makes me learning linux a very pleasant experience. Many many thanks Mr Kerrisk
T**D
East to read and comprehensive.
K**R
This is the most comprehensive and authoritative book on Linux Application programming.. Covers every detail of Linux API interface .. You won't need any other reference book .. Excellent !!!
Trustpilot
3 weeks ago
3 weeks ago