Michael Kerrisk

There was a time before eBooks, when developers had to buy actual massive paper editions of the most precious titles in their craft, and in some case, they had to carry them around, either for work or (also possible) for pleasure. In this particular case I have to say that I am happy to own the digital version of this Library entry, because as you can see on the cover picture of this article, it is a massive book.

We are talking about the 2010 book “The Linux Programming Interface: A Linux and UNIX System Programming Handbook” by Michael Kerrisk, a massive title with 1552 pages of incredible detail and relevance, available from No Starch Press at the time of this publication.

Let us be honest. The fact that this book has its own Wikipedia entry says a lot more than I could in this article; let us try to summarize (somehow) this massive volume in less than a thousand words.

Michael Kerrisk, a New Zealand native living in Germany, is a very well-known name in the Linux world. If you have ever used the man utility to read manual pages in your Linux system you have most certainly already read his writing: Michael has authored hundreds of “man pages”, and in some way it feels like writing this book was just inertia at work.

The book title explains that the scope of the book is the “programming interface” of the operating system; this description encompasses both the system calls and the GNU C standard library (also known as glibc in programming circles). The book dives into both, not separately, but at the same time, as it advances topic by topic (and there are 64 chapters filled with those).

The most interesting thing about this book is precisely that it is not just a catalog of functions with their description (we have the manual pages for that, after all). Each chapter is dedicated to a particular domain of interest: files, processes, threads, libraries, networking, user management, and so on and so forth. Each topic receives a very careful treatment, including edge cases, code examples, and even exercises at the end.

In a previous article we have talked about Abraham Silberschatz, Peter Baer Galvin, & Greg Gagne’s “Operating System Concepts” coursebook, a common choice in many bachelor programs, as it offers a wide overview of concepts; however, for students interested in the internals of the Linux operating system (I would say for those in a Master or PhD program) Kerrisk’s book will become second nature, and a mandatory read.

Just a warning to my readers; this book is not a Linux manual, so if you are looking for help about how to install or use any Linux distribution, you will be better served someplace else. The introduction, however, includes some interesting historical details about UNIX, Linux, and the C programming language, which might be most interesting to any programmer interested in the platform.

But if you happen to write any kind of software for Linux that needs to interact with the operating system internals in any way, in particular if you are using C, there is definitely no better book to read than this one. In that case, we would suggest complementing this book with the original Michael K. Johnson’s 1995 paper “The Linux Kernel Hackers’ Guide”; Rusty Russell’s “Unreliable Guide To Hacking The Linux Kernel” (2000); and even with the original programmer’s manual: Ken Thompson & Dennis Ritchie’s own “Unix Manual, first edition” originally published in November 1971. Oh, and for history boffins, get yourself a copy of the “Linux Kernel History Report 2020” published by the Linux Foundation.

Cover photo from a Yahoo! Japan auction.

Back to top