This book follows a few typographical conventions:

·         A new term is set in italics the first time it is introduced.

·         Program text, functions, variables, and other "computer language" are set in a fixed-pitch font—for example, printf ("Hello, world!\bksl n").

·         Names of commands, files, and directories are also set in a fixed-pitch font—for example, cd /.

·         When we show interactions with a command shell, we use % as the shell prompt (your shell is probably configured to use a different prompt). Everything after the prompt is what you type, while other lines of text are the system's response.

For example, in this interaction

% uname 

the system prompted you with %. You entered the uname command. The system responded by printing Linux.

·         The title of each source code listing includes a filename in parentheses. If you type in the listing, save it to a file by this name. You can also download the source code listings from the Advanced Linux Programming Web site ( or

We wrote this book and developed the programs listed in it using the Red Hat 6.2 distribution of GNU/Linux. This distribution incorporates release 2.2.14 of the Linux kernel, release 2.1.3 of the GNU C library, and the EGCS 1.1.2 release of the GNU C compiler. The information and programs in this book should generally be applicable to other versions and distributions of GNU/Linux as well, including 2.4 releases of the Linux kernel and 2.2 releases of the GNU C library.