TLPI is both a guide and reference book for system programming:
If you are new to system programming,
you can read TLPI linearly as an introductory guide:
each chapter builds on concepts presented in earlier chapters,
with forward references kept to a minimum.
Most chapters conclude with a set of exercises
intended to consolidate the reader's understanding of
the topics covered in the chapter.
If you are an experienced system programmer,
TLPI provides a
comprehensive reference
that you can consult for details of nearly the entire
Linux and UNIX (i.e., POSIX) system programming interface.
To support this use, the book is thoroughly cross referenced
and has an extensive index.
TLPI provides more than
just the technical details of the system programming interface:
it gives important context describing why and how to use the interfaces,
accompanied by a rich set of (complete)
example programs.
In the book, I assume that reader has some prior programming experience,
a reading knowledge of C,
and understands how to use common Linux or UNIX commands.
Previous experience of system programming is not required.
Extensive coverage of Linux-specific features:
TLPI covers features such as
epoll,
inotify,
capabilities
(a mechanism for improving security in privileged programs),
extended attributes
(attaching arbitrary metadata to a file),
i-node flags
(formerly known as ext2 extended attributes),
the clone()
system call,
the /proc file system,
signalfd,
and Linux-specific details of the implementation of
file I/O, signals, threads, shared libraries,
interprocess communication, and sockets.
A heavy emphasis on portability:
You can use TLPI as a guide to system programming on
any UNIX system
(hence the subtitle,
A Linux and UNIX System Programming Handbook).
TLPI pays close attention to UNIX standards, in particular
POSIX.1-2001/SUSv3
and
POSIX.1-2008/SUSv4,
clearly distinguishing features that are Linux-specific
from those that are present on most or all UNIX systems.
Consequently, you can use TLPI as a guide while writing programs
that need to be portable to all UNIX systems.
The author:
I'm an active member of the Linux community.
I've worked on the Linux
man-pages
project since 2000, and have been the project maintainer since 2004.
It's quite possible you've already read some of my published work,
since I'm the author or coauthor of nearly 40% of the
1000+ pages in the man-pages project.
The programming examples in TLPI are in C,
but the concepts are equally applicable in a wide range of other languages,
both compiled languages such as C++, Rust, D, Pascal, and FORTRAN,
and scripting languages such as Perl, Python, and Ruby.