The Linux Programming Interface
This article contains content that is written like an advertisement. (April 2019)
|Subject||covers current UNIX® standards (POSIX.1-2001 /SUSv3 and POSIX.1-2008 /SUSv4 )|
|Published||2010 (No Starch Press)|
The Linux Programming Interface: A Linux and UNIX System Programming Handbook is a book written by Michael Kerrisk, which documents the APIs of the Linux kernel and of the GNU C Library (glibc).
It covers a wide array of topics dealing with the Linux operating system and operating systems in general, as well as providing a brief history of Unix and how it led to the creation of Linux. It provides many samples of code written in the C programming language, and provides learning exercises at the end of many chapters. Kerrisk is a former writer for the Linux Weekly News and the current maintainer for the Linux man pages project.
The Linux Programming Interface is widely regarded as the definitive work on Linux system programming and has been translated into several languages. Jake Edge, writer for LWN.net, in his review of the book, said, "I found it to be extremely useful and expect to return to it frequently. Anyone who has an interest in programming for Linux will likely feel the same way." Federico Lucifredi, the product manager for the SUSE Linux Enterprise and openSUSE distributions, also praised the book, saying that "The Linux Programming Encyclopedia would have been a perfectly adequate title for it in my opinion" and called the book "…a work of encyclopedic breadth and depth, spanning in great detail concepts usually spread in a multitude of medium-sized books…" Lennart Poettering, the software engineer best known for PulseAudio and systemd, advises people to "get yourself a copy of The Linux Programming Interface, ignore everything it says about POSIX compatibility and hack away your amazing Linux software".
The Linux kernel API to userspace discussed in the book consists of both the System Call Interface and the GNU C Library.
In-kernel APIs are not discussed in the book, neither are ABIs.
At FOSDEM 2016 Michael Kerrisk, the author of The Linux Programming Interface, explained some of the issues with the Linux kernel's user-space API he and others perceive. It is littered with design errors: APIs which are non-extensible, unmaintainable, overly complex, limited-purpose, violations of standards, and inconsistent. Most of those mistakes can't be fixed because doing so would break the ABI that the kernel presents to user-space binaries.
- ^ "A goodbye note from Michael Kerrisk". lwn.net. Retrieved 2013-10-24.
- ^ "Linux man-pages home". kernel.org. Retrieved 2014-01-25.
- ^ "Amazon's Readers Review". Amazon.com. Retrieved 2014-05-01.
- ^ "Translations of 'The Linux Programming Interface'". man7.org. Retrieved 2014-05-01.
- ^ "Review: The Linux Programming Interface". lwn.net. Retrieved 2013-10-24.
- ^ "The Linux Programming Interface". slashdot.org. Retrieved 2013-10-24.
- ^ "FOSDEM 2011 interview". 2011-02-06. Retrieved 2014-02-28.
- ^ Michael Kerrisk (2016-01-31). "How to design a Linux kernel API".