In this book, I describe the Linux programming interface—the system calls, library
functions, and other low-level interfaces provided by Linux, a free implementation
of the UNIX operating system. These interfaces are used, directly or indirectly, by
every program that runs on Linux. They allow applications to perform tasks such as
file I/O, creating and deleting files and directories, creating new processes, executing
programs, setting timers, communicating between processes and threads on the
same computer, and communicating between processes residing on different
computers connected via a network. This set of low-level interfaces is sometimes
also known as the system programming interface.
Although I focus on Linux, I give careful attention to standards and portability
issues, and clearly distinguish the discussion of Linux-specific details from the discussion
of features that are common to most UNIX implementations and standardized
by POSIX and the Single UNIX Specification. Thus, this book also provides a comprehensive
description of the UNIX/POSIX programming interface and can be
used by programmers writing applications targeted at other UNIX systems or
intended to be portable across multiple systems.
1