The Linux Programming Interface
   HOME

TheInfoList



OR:

''The Linux Programming Interface: A Linux and UNIX System Programming Handbook'' is a book written by
Michael Kerrisk Michael Kerrisk is a technical author, programmer and, since 2004, maintainer of the Linux man-pages project, succeeding Andries Brouwer. He was born in 1961 in New Zealand and lives in Munich, Germany. Kerrisk has worked for Digital Equipment, ...
, which documents the APIs of the
Linux kernel The Linux kernel is a free and open-source, monolithic, modular, multitasking, Unix-like operating system kernel. It was originally authored in 1991 by Linus Torvalds for his i386-based PC, and it was soon adopted as the kernel for the GNU ...
and of the
GNU C Library The GNU C Library, commonly known as glibc, is the GNU Project's implementation of the C standard library. Despite its name, it now also directly supports C++ (and, indirectly, other programming languages). It was started in the 1980s by ...
(glibc).


Book

It covers a wide array of topics dealing with the Linux
operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
and operating systems in general, as well as providing a brief history of
Unix Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, ...
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 LWN.net is a computing webzine with an emphasis on free software and software for Linux and other Unix-like operating systems. It consists of a weekly issue, separate stories which are published most days, and threaded discussion attached to ...
and the current maintainer for the
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, whi ...
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 SUSE Linux Enterprise (often abbreviated to SLE) is a Linux-based operating system developed by SUSE. It is available in two editions, suffixed with Server (SLES) for servers and mainframes, and Desktop (SLED) for workstations and desktop compute ...
and
openSUSE openSUSE () is a free and open source RPM-based Linux distribution developed by the openSUSE project. The initial release of the community project was a beta version of SUSE Linux 10.0. Additionally the project creates a variety of tools, s ...
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 Lennart Poettering (born 15 October 1980) is a German software engineer working for Microsoft and the original author of PulseAudio, Avahi and systemd. Life and career Poettering was born in Guatemala City but grew up in Rio de Janeiro ...
, the software engineer best known for
PulseAudio PulseAudio is a network-capable sound server program distributed via the freedesktop.org project. It runs mainly on Linux, various BSD distributions such as FreeBSD and OpenBSD, macOS, as well as Illumos distributions and the Solaris operat ...
and
systemd systemd is a software suite that provides an array of system components for Linux operating systems. Its main aim is to unify service configuration and behavior across Linux distributions; Its primary component is a "system and service manag ...
, 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". At
FOSDEM Free and Open source Software Developers' European Meeting (FOSDEM) is a non-commercial, volunteer-organized European event centered on free and open-source software development. It is aimed at developers and anyone interested in the free and ...
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.


See also

*
Linux kernel interfaces The Linux kernel provides several interfaces to user-space applications that are used for different purposes and that have different properties by design. There are two types of application programming interface (API) in the Linux kernel that ...
* '' Programming Linux Games''


References


External links


The Linux Programming Interface at the publisher's (No Starch Press) Website

The Linux Programming Interface Description at Kerrisk's Website

API changes

The Linux Programming Interface Traditional Chinese Translation
{{DEFAULTSORT:Linux Programming Interface: A Linux and UNIX System Programming Handbook, The Computer programming books Books about Linux 2010 non-fiction books No Starch Press books Interfaces of the Linux kernel