The Linux Programming Interface: A Linux and UNIX System Programming Handbook
The Linux Programming Interface (TLPI) 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
–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.
First published January 1, 2010
About the author
Michael Kerrisk
Ratings & Reviews
Friends & Following
Community Reviews
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!
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 buried under the depths of abstractions JVM/Java and other languages, servers, libraries hide. Even something trivial like fopen/fread/fwrite are pretty complex and abstract from system calls point of view.
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.
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.
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.
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.
This is the thickest, the heaviest and the most interesting reference manual that I’ve read from cover to cover.
I’m genuinely surprised by high quality of «no-starch press» books
This is a ***ing linux bible.
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
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.
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.
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.
Understanding Linux syscalls is important for developers. Many innovations were made possible due to changes or the appearance of new system calls. And when your application doesn’t operate with the expected performance, understanding the Linux system calls will go a long way to help you understand the bottleneck. I read a lot recently about eBPF, and this book was helpful to feel comfortable on this advanced, also important, topic.
With over 1500 pages, this book will test the solidity of your bookshelf, and your desire to discover the Linux APIs. It’s best to lay the book on your desk. You will not read the book in a few days, but you don’t need to read the whole book. It contains many chapters, many examples in C, and reading the first pages of every chapter can be enough to decide if you want to learn more on this subject. You can always come back to read the code examples more attentively before using them in your programs.
The Linux Programming Interface is truly a masterpiece. Few technical books impressed me so much (and I read a lot!). The explanations are always clear, succinct, and the book is perfectly organized. A book like this requires dedication over numerous years before going to press. Michael Kerrisk is the maintainer of the Linux man-pages project since 2004, and many man pages were edited during the preparation of this authoritative book. I cannot stop seeing his name now that I have completed the book.
The Linux Programming Interface
Read it now on the O’Reilly learning platform with a 10-day free trial.
O’Reilly members get unlimited access to books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.
Book description
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 quality and the level of detail Michael Kerrisk put in his book. He is a great expert of Linux system calls and lets us share his knowledge and understanding of the Linux APIs.»Christophe Blaess, Author of Programmation systeme en C sous Linux
«. . . an essential resource for the serious or professional Linux and UNIX systems programmer. Michael Kerrisk covers the use of all the key APIs across both the Linux and UNIX system interfaces with clear descriptions and tutorial examples and stresses the importance and benefits of following standards such as the Single UNIX Specification and POSIX 1003.1.»Andrew Josey, Director, Standards, The Open Group, and Chair of the POSIX 1003.1 Working Group
«What could be better than an encyclopedic reference to the Linux system, from the standpoint of the system programmer, written by none other than the maintainer of the man pages himself? The Linux Programming Interface is comprehensive and detailed. I firmly expect it to become an indispensable addition to my programming bookshelf.»Bill Gallmeister, Author of POSIX.4 Programmer’s Guide: Programming for the Real World
«. . . the most complete and up-to-date book about Linux and UNIX system programming. If you’re new to Linux system programming, if you’re a UNIX veteran focused on portability while interested in learning the Linux way, or if you’re simply looking for an excellent reference about the Linux programming interface, then Michael Kerrisk’s book is definitely the companion you want on your bookshelf.»Loic Domaigne, Chief Software Architect (Embedded), Corpuls.com