This book is about writing software that makes the most
effective use of the system you're running on -- code that
interfaces directly with the kernel and core system
libraries, including the shell, text editor, compiler,
debugger, core utilities, and system daemons. The majority
of both Unix and Linux code is still written at the system
level, and Linux System Programming focuses on everything
above the kernel, where applications such as Apache, bash,
cp, vim, Emacs, gcc, gdb, glibc, ls, mv, and X exist.Written primarily for engineers looking to program (better)
at the low level, this book is an ideal teaching tool for
any programmer. Even with the trend toward high-level
development, either through web software (such as PHP) or
managed code (C#), someone still has to write the PHP
interpreter and the C# virtual machine. Linux System
Programming gives you an understanding of core internals
that makes for better code, no matter where it appears in
the stack. Debugging high-level code often requires you to
understand the system calls and kernel behavior of your
operating system, too.
Key topics include:
An overview of Linux, the kernel, the C library, and the C
compiler
Reading from and writing to files, along with other basic
file I/O operations, including how the Linux kernel
implements and manages file I/O
Buffer size management, including the Standard I/O library
Advanced I/O interfaces, memory mappings, and optimization
techniques
The family of system calls for basic process management
Advanced process management, including real-time processes
File and directories-creating, moving, copying, deleting,
and managing them
Memory management -- interfaces for allocating memory,
managing the memory you
have, and optimizing your memory access
Signals and their role on a Unix system, plus basic and
advanced signal interfaces
Time, sleeping, and clock management, starting with the
basics and continuing through POSIX clocks and high
resolution timers
With Linux System Programming, you will be able to take an
in-depth look at Linux from both a theoretical and an
applied perspective as you cover a wide range of programming
topics.