Home - APIs & Operating Environments
The Linux Programming Interface: A Linux and UNIX System Programming Handbook
Price: $79.95
& 2-Day * Free Nationwide Shipping! (* details)
Availability: Usually ship in 24 hours if sold by Amazon.com
Product Details
| Binding: | Kindle Edition |
|---|---|
| EAN: | |
| Label: | No Starch Press |
| Feature: | |
| Publisher: | No Starch Press |
| Studio: | No Starch Press |
Editorial Reviews
The Linux Programming Interface is the definitive guide to the Linux and UNIX programming interface—the interface employed by nearly every application that runs on a Linux or UNIX system.
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.
Praise for The Linux Programming Interface
"If I had to choose a single book to sit next to my machine when writing software for Linux, this would be it."Martin Landers, Software Engineer, Google
"This book, with its detailed descriptions and examples, contains everything you need to understand the details and nuances of the low-level programming APIs in Linux . . . no matter what the level of reader, there will be something to be learnt from this book."Mel Gorman, Author of Understanding the Linux Virtual Memory Manager
"Michael Kerrisk has not only written a great book about Linux programming and how it relates to various standards, but has also taken care that bugs he noticed got fixed and the man pages were (greatly) improved. In all three ways, he has made Linux programming easier. The in-depth treatment of topics in The Linux Programming Interface . . . makes it a must-have reference for both new and experienced Linux programmers."Andreas Jaeger, Program Manager, openSUSE, Novell
"Michael's inexhaustible determination to get his information right, and to express it clearly and concisely, has resulted in a strong reference source for programmers. While this work is targeted at Linux programmers, it will be of value to any programmer working in the UNIX/POSIX ecosystem."David Butenhof, Author of Programming with POSIX Threads and Contributor to the POSIX and UNIX Standards
". . . a very thorough—yet easy to read—explanation of UNIX system and network programming, with an emphasis on Linux systems. It's certainly a book I'd recommend to anybody wanting to get into UNIX programming (in general) or to experienced UNIX programmers wanting to know 'what's new' in the popular GNU/Linux system."Fernando Gont, Network Security Researcher, IETF Participant, and RFC Author
". . . encyclopedic in the breadth and depth of its coverage, and textbook-like in its wealth of worked examples and exercises. Each topic is clearly and comprehensively covered, from theory to hands-on working code. Professionals, students, educators, this is the Linux/UNIX reference that you have been waiting for."Anthony Robins, Associate Professor of Computer Science, The University of Otago
"I've been very impressed by the precision, the quali...
Customer Reviews
This is not a "how to program" book, but you will definitely learn a lot about programming from it. I would recommend it to anyone who is serious about Linux/Unix programming in C, or actually in any language.
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!
The back cover heralds the work as "the definitive guide to Linux and UNIX system programming," and it is very thoroughly true. If you want to learn how to program Perl or Python, this isn't it. The examples are notably and obviously in C. C is the language of UNIX systems programmers and of the Linux kernel. Likewise, you won't find a dissertation on Gnome versus KDE. It is my opinion that this book is for the hacker who logs into the machine at runlevel 3 or, if at 5, first opens a terminal window in order to do "real work."
I strongly encourage you to obtain a copy of this book. If you're at all serious about Linux system programming, you'll be amazed at the insight produced on the pages of this extensive volume. I searched for at least one "bad" thing throughout it, you know, just to see if there was a blemish worthy of mention or some reason that 5 stars wasn't quite right. I haven't found one yet.
There are books that you simply love and want to read over and over again that you present 5 passionate stars. This book is the kind that is a wealth of information in your hands and is simply worth 5 valued stars because you'll use it that often. If you're a systems programmer, this work is probably both types.
I believe that if you hold yourself as a skilled system programmer, that this book will either confirm it or help you find any flaws with your system concepts and implementation choices. So far, I haven't found any part of it that didn't offer me some useful nugget of quality information or insightful anecdote.
If you are a Linux geek, you probably need this book and will benefit as much as I do from reading, browsing and referencing it as you write your code.
That being said, the only real complaint I have is that in several sections the otherwise useful and relevant information is scattered out over several pages. Would greatly prefer to have a synopsis section at the beginning of each chapter with a paragraph or two to refresh the reader's mind about the nature of those items then explained in greater detail within, and without having to sift through those dozens of pages per chapter to get to the right portion.
Still, there is no question about it: Everything you need is there, it's just that sometimes you have to skip forward or backward several pages to get it all.
I think the author struck the exact right balance between what to cover in detail and what the reader should be expected to know (or learn elsewhere).
You mostly get down-to-earth prose explaining how things work, why they work this way and what you must pay attention to.
The programming examples are examples to follow.
I expect this beautiful work to positively impact the future of the linux community.
My initial impressions have proven true. This book is a great reference and resource for learning both the Linux API's and the general posix API's.
I highly recommend this book to any geek interested in low level programming.
5 glowing stars plus regards.
The author had added the plentiful explanations and diagrams on the major topics, it isn't difficult to know that he is the one of the writers of the man pages.
There have been lots of praises for this book already, so I don't need to say anymore ...
BEST REFERENCE BOOK FOR THE LINUX PROGRAMMING.
If you are a Linux or UNIX programmer, you should get this book. Do you know a Linux or UNIX programmer and want to give him (her? ;-)) a gift? Get this book. I thought it was a stack of manpages, which would already have been great, but this book is the true successor to the historic Stevens works on UNIX. If you think you don't need this book since you know everything already, that's what I thought too, and I was wrong. Even if you won't read it, the 1552 pages will look really good on your desk.
But seriously, this book is a one-stop shop for just about everything anyone who needs clear, accurate info on Linux system programming could ask for. Strangely, however, it has nothing on the Hyper Text Coffee Pot Control Protocol (RFC 2324).
To date, sadly, I've only had time to really get into the USB sections of this book while writing drivers, however I really can't wait to move throughout the book, as while I may already know most of this already, there are some dusty corners that could use some better explaining :)
Excellent book, I completely recommend it.
The only bad thing I can say about the book is that I left it in the trunk of a limo on the way to a bachelor party weekend :( As good as the book was, it's probably just as well ;) The book is also a bit heavy to carry around at >1,400 pages, so I'm considering buying it with an e-reader.
Also - I was confused on this point for a little bit - if you're looking for coverage of user space processes like systemd or command-line filters like less or grep, this is not the book for you - it covers only the underlying kernel system calls and c api which those filters are written with.
That said, I'm learning a lot about linux through this book - and C as well. I learned C++ before I learned linux, in some programming class where we used it to build a simple calculator and similar tasks. Learning C a bit later was a pain because it seemed so archaic and there was no proper motivation. Reading this book, though, made me realize how C actually makes a lot of sense in its proper context as a tool primarily for systems programming, for which it was created.
It's still slow and dense to read and digest (I still have a long ways to go with it), but I don't think there's any way around that - there's a lot of subtle and good information here, and it builds up the foundations progressively.
Create your own review

