Full description not available
B**H
If you're the kind of person to find this page, just buy it
This is without a doubt the best written technical book I've ever read; it's honestly hard to believe only one person wrote and organized it. In an era where you can often get a better answer from a highly voted Stack Overflow question than you'll find most books, TLPI is 100% an exception.The material is presented in such a fashion that pretty much anyone with a working knowledge of C can pick it up, sit down, and understand any of its topics. Kerrisk often opens with a code-light "overview" chapter on the more dense topics (e.g. networking), and his descriptions are as elegant and well-written as anything you'll find on SO or by googling. He then walks through the topic with an in-depth discussion of the various APIs and excellent example code, crucially often also mentioning now-outdated approaches you will still see pop up, so the reader isn't clueless when encountering pre-POSIX code in real life.It's the rare book indeed which can serve as both an excellently written (and illustrated!) introduction and reference. If you're a student looking to get into linux systems programming (or been assigned some less than high quality reading), pick this up. if you're a programmer of the type who often finds himself typing "man 2 somethingsomething...", absolutely 100% pick this up. The fact that the author is also in charge of the man pages project for linux shows in his encyclopedic knowledge--what makes this book so outstanding is his ability to present that knowledge in an easily-digested form with tight, well-written examples.Yes, it's massive. But trust me, there isn't a page wasted in here--even if you're experienced in the area, walking through each chapter and digesting Kerrisk's explanations will serve you well. And to any professors or teachers out there who are curious: yes, please use this as your textbook. As a grad student who hasn't been in CS for very long, I was extremely fortunate to be assigned this as a textbook for a systems programming class. Without this book, there's no way I couldn't have learned as much as I did in a fairly short period of time; more importantly, it made me come to appreciate and enjoy systems programming. It combines the readability/working examples of the best Stack Overflow answers, the comprehensiveness of man pages, and logical progression for new learners in one amazingly tight (if not light) package.
A**L
One of the best technical books I have ever read. Removed the intimidating mystery of the Linux OS and its kernel.
The Linux operating system, and it's kernel more specifically, has always been this blackbox of mystery to me and thankfully this book has removed much of that. The various topics of system programming are broken up very nicely in the book. Each chapter is primarily broken up into three sections: An introduction into the subject. An overview of the primary APIs provided by the Kernel to achieve the desired task. And an easy to understand working example of these APIs in action written in C. I now have a better idea of the Linux programming interface and it doesn't feel like much of a mystery to me anymore. I finally realize how central the kernel is to the operations of the OS. I feel I can leverage this knowledge to make me a much more productive contributor to my software development team.I suggest this book to anyone who is unfamiliar with the Linux operating system and its kernel. A working understand of C is strongly suggested since the examples are all done in it. The C examples are not advanced, so you don't need to be an expert. Just teach yourself the basics of C programming, including working with pointers, and you should be good enough to follow through them. I also found this book to often be a better resource to figuring out common tasks in system programming versus searching the web.Thanks Kerrisk for putting together this book and the contributions you made to the man pages. It certainly is a new classic.
L**R
All around an excellent book!
Just all around an excellent book. Great content, relevance, code examples and explanation. I read a lot of tech books and this one definitely stands out. Even if you want to skip the C and just get a great understanding of Linux; this book if for you. I read through the book, read it again and now reference it. The code that is provided is easy to access as well. This book won't disappoint you if you want to know more about Linux, C programming, Unix operating systems, and much more. One comment on the length of the book; it is long, but not long in that rambling on and on, there is just so much to talk about and he goes depth on so many subjects. Some chapters may not be relevant and you can skip over them without having dependencies on other chapters.
L**I
This is THE Linux book
Anyone who writes assembly from time to time is aware of how cryptic the manpages for syscalls can be, especially when using more complicated syscalls that require certain data structs to be passed as arguments (even the internet seems to have no PoC's for some of these >:| ).I was hoping this book would serve as a handy reference for me to turn to when the manpages weren't cutting it, but it has far surpassed that expectation. This is THE most detailed programming book that I own. I consider this my personal Bible for low-level Linux programming.My only half-complaint about this book is that it is extremely knowledge-dense, making it time-consuming to read. I found myself re-reading pages frequently in order to fully absorb all the information the author throws at you... but thats the only half-bad thing I can say about it.I would highly recommend this to anyone who frequently writes low-level Linux applications whether it be Assembly/C/Rust.
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.
D**N
The most fun I've ever had writing C as a beginner
Typical C books are boring, dry and all follow the same structure, they give you the foundations with no real direction on how you progress to be useful.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.
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.
T**N
Superb
In my 45 years of computer experience I have come across several outstanding documents that have supported my coding: "IBM System 360 Principles of Operation", the set of RSX11/M manuals, and K&R. This book stands proudly on my bookshelves beside them.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.
I**C
I love it.
This book is simply great. It brings you through all the linux programming interface (the title couldn't be better), but it can also be used as an everyday reference. There are a lot of details that often can't be easily found with a web search, which is gold. Having it in Kindle format is even better, due to the large size of the printed book, I can have it literally everywhere.
Trustpilot
1 day ago
5 days ago