Goodreads helps you keep track of books you want to read.
Start by marking “The Linux Programming Interface: A Linux and Unix System Programming Handbook” as Want to Read:
The Linux Programming Interface: A Linux and Unix System Programming Handbook
Enlarge cover
Rate this book
Clear rating
Open Preview

The Linux Programming Interface: A Linux and Unix System Programming Handbook

4.62  ·  Rating details ·  511 ratings  ·  29 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
Hardcover, 1506 pages
Published October 27th 2010 by No Starch Press (first published 2010)
More Details... Edit Details

Friend Reviews

To see what your friends thought of this book, please sign up.

Community Reviews

Showing 1-30
Average rating 4.62  · 
Rating details
 ·  511 ratings  ·  29 reviews

More filters
Sort order
Start your review of The Linux Programming Interface: A Linux and Unix System Programming Handbook
Gary Boland
Mar 17, 2014 rated it it was amazing
Shelves: reference, again
It took me more than a year to cover most of the chapters in this book but it is worth it. The most comprehensive explanation of computer science. The truly remarkable aspect is how easy it is to read. Bravo Mr. Kerrisk!
Jan 12, 2012 rated it it was amazing
Great book. I'm halfway through and I learnt a lot of stuff and cleared my understanding of UNIX/Linux system programming. I've decided to read it to learn about real UNIX programming, system calls, how to implement socket servers, threading and processes in UNIX, signals and other low-level stuff. Although I am not a system UNIX programmer (I use Linux to run Java servers), it is very interesting to read and understand what layers of pretty cool (primarily in performance perspective) stuff are ...more
Kam Yung Soh
Jul 25, 2011 rated it it was amazing
Shelves: computing, reference
If you've ever read 'Advance Programming in the Unix Environment" and wanted something similar for Linux then this is it.

This book covers the Linux System API in wonderful detail, providing examples and tips on how to use the API calls properly.

A must read for anybody who has ever wanted to do systems programming for Linux.
Jan 09, 2019 rated it it was amazing
Shelves: nonfic-topic
This is the one book to have for writing C programs for Linux. Goes into incredible depth on a variety of useful topics, and also discusses some Unix history along the way. If I had to have a gripe, it's that it's not twice as long to also discuss the kernel's internal mechanisms, although that's ably covered by other books.
Jesse Storimer
Jul 22, 2013 rated it it was amazing
This book is very comprehensive and my favourite source of Unix lore. It's written for C programmers, but has useful diagrams and high-level stuff for anybody working with Unix systems.
Sep 21, 2012 rated it it was amazing
Still reading, but wow, what a comprehensive reference.
Mar 24, 2016 rated it it was amazing
Shelves: reference
An outstanding book; one of the classics. Extremely dense if read cover to cover, individual sections are highly readable; this is a great book to have both at your desk for reference or at your toilet or bedside for quick reads.
Nov 25, 2017 rated it it was amazing
This book is the definitive work companion for every developer.
It is an excellent tour through all the features that Linux provides, not limited to processes, networking, I/O, inter-process communication, etc. There's always something to learn from this book.
Colin Jones
Dec 30, 2013 rated it it was amazing
Everything you want to know about programming on Linux, from the system calls on up. This took me almost a year to get through, and it was worth it. I'll be revisiting this many times, I'm sure, for the bits on linking, terminals, and sockets, along with many other amazingly detailed chapters.
Apr 10, 2018 rated it it was amazing
One of the best technical books I have ever read.
Duc Tam Nguyen
Mar 16, 2018 rated it it was amazing
Shelves: programming
A wonderful and must read book!
Oct 09, 2012 rated it it was amazing
The definite Linux programming bible!
Alex Mallet
Jan 15, 2015 rated it it was amazing
Great in-depth explanation of Linux system APIs.
Danh Thanh Nguyen
Oct 17, 2016 rated it it was amazing
This book is massive but it was worth it.
Marcos Santamaria
Feb 05, 2013 rated it it was amazing
Complete Linux and C programming book. It covers the linux architecture in depth
André Santos
Dec 01, 2018 rated it it was amazing
This is by far the best technical book I've ever read. I'll keep it around for a few years as it contains much valuable information.
Moreshwar Datye
Sep 28, 2017 rated it really liked it
Detailed, super-detailed.
Feb 10, 2018 rated it it was amazing
This is an absolutely stellar compilation of knowledge, combining the reusable utility of a reference with historical justification for the idiosyncrasies of various UNIX systems today.

This helped close the loop on a lot of fundamental concepts that I had learned ad hoc through experience but had never "read the manual" on, and as a result clarified a lot of my understanding.

I was able to grok this with a limited knowledge of C (I learned it in university, but never used it professionally). Kerr
John Doe
Sep 17, 2020 rated it it was amazing
Shelves: cs
Exactly what I need :)
Interesting parts:
Chpt 2. Fundamental concepts
Chpt 8. Users and groups
Chpt 9. Process credentials
Chpt 17. Access control lists
Chpt 18. Directories and links
Chpt 27. Program execution
Chpt 37. Daemons
Chpt 38. Writing secure privileged programs
Chpt 39. Capabilities
Chpt 40. Login accounting
Chpt 56-61. Sockets
A. Tracing system calls
B. Parsing command-line options
C. Casting the NULL Pointer
E. Further sources of information
Marc Blok
Nov 07, 2020 rated it it was amazing
Great book with so much to learn. Because of the time that it would take I could not try everything described in the book but that not the problem of the book. Maybe the book would be better to when there are more real-life examples added. And some more info regarding the *BSD systems.
Marco Buttu
Apr 21, 2020 rated it it was amazing
Non lo ho letto dall'inizio alla fine, lo uso prevalentemente come guida di riferimento. É il miglior libro di programmazione che conosca: esaustivo e allo stesso tempo conciso, chiaro e scorrevole. L'autore ha realizzato un'opera eccezionale.
Ben Kream
Mar 13, 2017 rated it it was ok
Waaaay too much depth and waaay too little emphasis on the important points. This book talks a lot, but doesn't say much.

"Beginning Linux Programming" (Mathew & Stones) is a much better book.
Vasil Kolev
Nov 11, 2017 rated it really liked it
Shelves: tech
Nice book with almost everything you'll need to write system code on Linux, but seems to have something missing.

What was great in W. Richard Stevens' books was not only the breadth, but also the depth of the material - historical references, weird behaviors. Here those aren't that much, and there are too many "go read the manual or that paper on this topic" (it's pretty strange to have POSIX AIO omitted from the book). I understand that the book I'd have liked would've been at least twice the si
Mar 21, 2015 rated it it was amazing
Okay, I confess: I have not read this book cover to cover. It's 1,500 or so pages long and it's a book about programming. Sue me.

Still, I have read a lot of it, and over the course of this past quarter at OSU it has been indispensable as a resource and learning tool. There are other UNIX system programming books out there, and some may even be great. This one has to rank in the top five. It's expensive, but it's worth it.
Nick Black
Just got this colossal octavo from NoStarch Press for review. It looks great!
Higazi Z'eagle
Mar 25, 2013 is currently reading it
Great Comprehensive Reference
Jan 19, 2017 rated it it was amazing
Even better than apue
Subhajit Das
rated it really liked it
Dec 09, 2019
rated it it was amazing
Nov 21, 2019
Ben Simmonds
rated it it was amazing
Dec 30, 2015
« previous 1 3 4 5 6 7 8 9 next »
There are no discussion topics on this book yet. Be the first to start one »

Readers also enjoyed

  • The C Programming Language
  • Design Patterns: Elements of Reusable Object-Oriented Software
  • The Go Programming Language
  • The Manager's Path: A Guide for Tech Leaders Navigating Growth and Change
  • The Pragmatic Programmer: From Journeyman to Master
  • Designing Data-Intensive Applications
  • iWoz: Computer Geek to Cult Icon: How I Invented the Personal Computer, Co-Founded Apple, and Had Fun Doing It
  • Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)
  • Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14
  • A Tour of C++
  • Head First Design Patterns
  • Clean Architecture
  • Game Engine Black Book, Wolfenstein 3D
  • The Practice of Programming (Addison-Wesley Professional Computing Series)
  • Kubernetes in Action
  • The Tangled Web: A Guide to Securing Modern Web Applications
  • Clean Code: A Handbook of Agile Software Craftsmanship
  • Game Engine Black Book: Doom
See similar books…

Goodreads is hiring!

If you like books and love to build cool products, we may be looking for you.
Learn more »

News & Interviews

Are you spending this season bundling up against the chill or enjoying summery southern hemisphere vibes (in which case we are...
86 likes · 29 comments
“The sched_setscheduler() system call changes both the scheduling policy and the priority of the process whose process ID is specified in pid. If pid is specified as 0, the attributes of the calling process are changed.” 1 likes
“When a process is rescheduled to run on a multiprocessor system, it doesn’t necessarily run on the same CPU on which it last executed. The usual reason it may run on another CPU is that the original CPU is already busy. When a process changes CPUs, there is a performance impact: in order for a line of the process’s data to be loaded into the cache of the new CPU, it must first be invalidated (i.e., either discarded if it is unmodified, or flushed to main memory if it was modified), if present in the cache of the old CPU. (To prevent cache inconsistencies, multiprocessor architectures allow data to be kept in only one CPU cache at a time.) This invalidation costs execution time. Because of this performance impact, the Linux (2.6) kernel tries to ensure soft CPU affinity for a process — wherever possible, the process is rescheduled to run on the same CPU.” 1 likes
More quotes…