

The Linux Programming Interface: A Linux and UNIX System Programming Handbook [Kerrisk, Michael] on desertcart.com. *FREE* shipping on qualifying offers. The Linux Programming Interface: A Linux and UNIX System Programming Handbook Review: I've never seen a book rated so high. After starting to read it, If I could give it 10 stars, I would! Wow! - 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 desertcart, started searching for relevant resources, and came across this book. I've bought thousands of dollars of technical books on desertcart, and read lots of desertcart 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 desertcart 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. Review: 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.
| Best Sellers Rank | #26,563 in Books ( See Top 100 in Books ) #1 in Unix Programming #2 in Linux Programming #3 in Linux Networking & System Administration |
| Customer Reviews | 4.8 out of 5 stars 756 Reviews |
J**R
I've never seen a book rated so high. After starting to read it, If I could give it 10 stars, I would! Wow!
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.
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.
C**A
TLPI - A masterpiece, full of essential information. A real look under the hood!
/** * 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!
W**S
Modern Masterpiece of Linux Programming
This book claims it is the single most comprehensive book about Linux and is destined to be a classic. After finishing the book I would agree. For 1400 pages the author beautifully explains how Linux kernel programming works. I did not notice a single mistake the entire book and the writing flows elegantly with each sentence conveying valuable information. The author knows the material so well including the history, and can explain why many design decisions were made. When a function call or a technique is outdated the author explains why it is no longer used, and what the new paradigm is. I found the sections on IPC (Inter-Process Communication) to be excellent. Every type of IPC is explained with multiple chapters for each in some cases. The trade-offs are examined in depth as to the best communication method. Certain sections used analogies well. On page 1155 stream sockets are explained and the author explains how this is like a telephone. Each step of setting up a socket is explained from a technical standpoint and how this would be represented as a real life telephone. The balance between practicality and theory was excellent. A surprising amount of C code is included in the book (Linux is written in C). The coding examples have comments and side notes when needed. This book assumes you know C at least reasonably well. It is rare to find a book as complete, well written and detailed as this. This is a true modern classic and a masterpiece.
A**A
Highly recommend
I got this book in really good condition. The paper is of high quality and I love the font used. Regarding the books contents I believe this book is indispensable to software practitioners who want to have a deep understanding of Unix-like systems. I take this book with me on flights to dig deep into topics that interest me. The exercises and code are great and the explanations on different topics are done well. I really liked the parts that discussed Interprocess communication as well as File I/O. Would I recommend this book? Yes, of cause!
C**R
Must have book for all Linux developers!
I pre-ordered this book back in Sept 2010 and received just days before my honeymoon and while the wife didn't let me bring my laptop, she let me bring this book! I don't think I could have picked a better book to carry around 8000 miles. :) This book is simply the best Linux programming book since Stevens' Unix programming books. It is very current covering the recent 2.6 kernel updates and SUSv4 specification. This book is an awesome 64 chapters of just about every aspect of Linux systems programming you can think of. It has great coverage of the file system API, pthreads, socket programming, virtual memory, and so much more. I'm more of a server developer, so I was pleased to find daemons and advanced socket I/O covered in detail, especially the epoll() API. This book is pure C, so you won't find any C++ or STL, but that's actually a good thing because it keeps the examples really simple. And of course the APIs described work just fine with C++. :) The only thing this book is missing is possibly an appendix on gdb and valgrind. It does however have an appendix on strace. This book doesn't cover Autotools, so you may want to pick up a copy of Autotools: A Practioner's Guide to GNU Autoconf, Automake, and Libtool , which is also published by No Starch Press. I seriously recommend this book to anybody who is interested in Linux programming. I recommend buying both the print and ebook versions so you don't have to carry this 5.1 pound book around, but it is nice to be able to mark up the book. Go buy this book!
S**O
Great book but a little bit outdated
This is a very comprehensive reference and the author does a great job explaining concepts with just the right amount of examples. The only downside is that Linux has changed quite a lot in the past ten years and there are no mentions of cgroups, containers, systemd and etc. I really hope the author will follow up with another revision because this is my go-to book on Linux.
C**R
The single best resource on this topic available.
This is THE resource you need to buy ASAP if you've inherited any Unix or Linux systems programs and don't know where to get started. It is rigorous and comprehensive in a way that perusing assorted lists of other documentation on the topic isn't. Everything you need to know is all on this one place. The writing style and organization is also impeccable. Its serious, professional, and to the point, with just as many interesting example programs and excercises as there is exposition. I keep this book on my desk and use it as a reference.
Trustpilot
1 month ago
4 days ago