Book Review: Advanced UNIX Programming, 2nd Edition
Advanced UNIX Programming, Second Edition
Marc J. Rochkind
Although this book is the second edition of this title, the former edition was published quite a while ago, 20 years to be exact. Quite a bit in UNIX programming has changed since then.
The book begins with an introduction to UNIX and its variants, including Linux and FreeBSD. Subsequently, the book deals with I/O--file I/O and, perhaps less common, terminal I/O--processes and threads. A large portion of the book is devoted to interprocess communication (IPC). Coverage is given to pipes, named pipes (FIFOs), shared memory and sockets, all of which are accompanied by many code examples. Also explained are the two sets of system calls used for messages, semaphores and shared memory--System V IPC, the older system, and POSIX IPC, the newer one. In addition to describing each system, the author explains the advantages and disadvantages of using each.
The author also defines, for the purpose of writing the IPC portion of the book, a special interface called SMI--simple messaging interface. SMI is not part of any standard. Instead, it defines requirements for a simple messaging interface, with types and functions of its own, which then is demonstrated in various IPC mechanisms. The final chapter of the book is devoted to signals and timers.
Throughout the book, examples are provided that demonstrate doing things the wrong way--either partially or completely--and subsequently how to fix them. The author also often gives a simple example that builds into a more complex example, which is quite helpful for watching an idea grow. It may take a bit of time to get used to all of the code samples--there are a lot of them. Furthermore, almost every system call is wrapped in a macro that tests its return value; usually it is ec_neg1. Finally, almost every program ends with EC_CLEANUP_BGN / EC_CLEANUP_END macros. Be sure to explore the book's accompanying Web site, which provides all the code samples contained in the book.
All in all, Advanced UNIX Programming, Second Edition is a great book; it's well written, interesting and full of examples. It's a great resource for beginning and intermediate programmers who want to improve their overall knowledge of UNIX.
Dan Kaspi is a software engineer who has been developing network applications for Linux for over five years. Besides being a Linux enthusiast, he likes playing chess and music.