What Is *The Linux Programming Interface* by Michael Kerrisk?

Updated

The Linux Programming Interface (often shortened to TLPI) is a book by Michael Kerrisk that serves as a comprehensive guide to Linux and UNIX system programming. It is closely tied to man7.org, Kerrisk's personal site, which hosts his training courses, conference presentations, the man-pages project, and online manual pages. If you are looking for a single reference on how to write system-level programs on Linux — using system calls, the C library, and kernel interfaces — TLPI is one of the standard works in that space, and man7.org is the hub where its author's related material lives.

What the book covers

TLPI is organized as a detailed tour of the Linux/UNIX programming interface. Its scope includes:

  • Files and I/O — file descriptors, open/read/write, file status flags, and the /proc filesystem.
  • Processes — process creation with fork, program execution with exec, process termination, and process groups and sessions.
  • Memory — memory allocation on the heap and stack, and virtual memory concepts.
  • Signals — signal handling, blocking, and the signal-driven I/O model.
  • Threads — POSIX threads, synchronization primitives, and thread safety.
  • Interprocess communication — pipes, FIFOs, message queues, semaphores, shared memory, and sockets.
  • File systems and directories — directory operations, file attributes, and links.
  • Time, users, and groups — clocks, timers, and the user/group model.

The book is written for programmers who already know C and want to understand how the operating system exposes its services, rather than for application-level developers working only with high-level frameworks.

How it relates to man7.org and the man-pages project

man7.org is Michael Kerrisk's site, and its homepage lists several distinct resources:

  • Training courses — courses Kerrisk teaches on Linux system programming.
  • The Linux Programming Interface — the book itself.
  • Conference presentations — talks he has given.
  • The man-pages project — the project that maintains the Linux manual pages (section 2, 3, and related pages).
  • Online manual pages — browsable versions of the man pages.
  • Articles and a Blog.

The connection matters because the man-pages project is the upstream source for much of the documentation that TLPI explains in depth. When you read a man page for a system call such as fork(2) or epoll(7), you are often reading text maintained through that project. TLPI expands on those pages with background, examples, and rationale that a man page does not have room for.

Who it is for

TLPI is aimed at:

  • Systems programmers and embedded developers working in C on Linux or UNIX.
  • Students in operating systems or systems programming courses.
  • Developers who need to understand what happens below a language runtime or framework.

It assumes familiarity with C and basic UNIX command-line usage. It is a reference and a teaching text, not an introductory programming book.

Related resources on man7.org

If you want to go beyond the book, man7.org provides:

  • Online manual pages — a browsable copy of the Linux man pages, useful for quick lookups of specific functions and system calls.
  • The man-pages project — information about the project that maintains those pages.
  • Training courses — instructor-led material on the same subject area.
  • Conference presentations and articles — additional explanations and talks by the author.

The site's homepage presents these as separate sections, so you can move between the book, the manual pages, and the training material depending on whether you need a deep explanation, a quick reference, or structured instruction.