Features
- Cover Type: Hard Cover with 592 pages
- Published by: Prentice Hall PTR
- Edition: 2nd Edition September 4, 1998
- Written in: English
- ISBN 10 Number: 0130810819
- ISBN 13 Number: 978-0130810816
-
Book Dimensions:
9.3 x 7.1 x 1.3 inches
- Weighs: 2.2 pounds
Product Review
The first volume of
Unix Network Programming,
Networking APIs: Sockets and XTI covers just about everything you need to know to get your applications to talk to other computers on a network. In this second volume, W. Richard Stevens discusses what you need to know to get your applications to talk to other applications running on your computer. There's a big difference, and Stevens covers it well.
Stevens introduces the reader to the internal structures of Posix interprocess communication (IPC) and System V (SysV) IPC; pipes and first in, first outs (FIFOs); message queues; how to lock and unlock files and records; semaphores; shared memory; and remote procedure calls (RPCs). He explains the difference between the Posix and SysV implementations of semaphores, message queues, and shared memory. There are also plenty of notes and examples for the reader.
This book is invaluable for programmers because it explains all of those little "gotchas" that always seem to pop up. In addition, the explanations of the differences between Posix IPC and SysV IPC really help readers decide which version they'd like to use for their applications.
--Doug Beaver
Book Info
Presents a comprehensive guide to every form of IPC, including message passing, synchronization, shared memory, & Remote Procedure Calls (RPC). Text contains extensive new source code - all carefully optimized & available on the Web. DLC: Unix (Computer file).
Reader Reviews
Since anyone considering buying a technical book always needs to know what it covers, here's the table of contents: Part 1. Introduction 1. Introduction 2. Posix IPC 3. System V IPC Part 2. Message Passing 4. Pipes and FIFOs 5. Posix Message Queues 6. System V Message Queues Part 3. Synchronization 7. Mutexes and Condition Variables 8. Read-Write Locks 9. Record Locking 10. Posix Semaphores 11. System V Semaphores Part 4. Shared Memory 12. Shared Memory Introduction 13. Posix Shared Memory 14. System V Shared Memory Part 5. Remote Procedure Calls 15. Doors 16. Sun RPC Epilogue Appendix A. Performance Measurements Appendix B. Threads Primer Appendix C. Miscellaneous Source Code Appendix D. Solutions to Selected Exercises Bibliography Index This is the third and least of Stevens' three books on UNIX programming (he also coauthored a multi-volume work on TCP). It is the not the least because it is necessarily the worst, but because it has the shortest and has the narrowest application domain. Having said it is the least, it remains a work of the highest quality in an industry that is notable for the huge quantity of bad books that it produces. The structure of this book will be familiar to readers of his prior two books: the lowest-level building block around which Stevens structures the book is the individual function call. For each call (or minor variations on a single call), he provides the C prototype, and then, in text, explains what the function does, what it's arguments are for, and then provides a small C program that demonstrates it in action (all of the sample programs can also be downloaded from the web). These function-level building blocks are arranged into related sets, each of which is a chapter in the book. Each chapter has a wrapper that explains the basic concepts behind the functions in that chapter, and some review exercises at the end. The chapters in turn build on each other, with the most basic ones at the beginning and the more difficult ones towards the end. In spite of the book's many positive qualities, one thing that this book brings to light, however, is that there is a thread-sized hole in Stevens' UNIX writings. "Advanced Programming in the UNIX Environment" had a great deal of information about processes, but nothing about threads. "UNIX Network Programming: Volume 1", discussed multi-threaded socket programs, but didn't go into any depth on threading. This volume, although it discusses thread synchronization, only touches on general threading issues. Thus, the works, taken as a group, go into some of the important issues and uses of threading without giving the reader a solid grounding in the subject. As threading increases in frequency, this deficiency has grown in importance. Another difference between this book and its predecessors is that it deals with an area where standards are much weaker than the others; thus, the chapters often have to explain different implementations for accomplishing a task rather than building a basic-to-advanced sequence. This obviously is in no way Stevens' fault, but many readers will find that half the book, which is already the thinnest of Stevens' programming books, is concerned with API's which do not exist on their platform of interest. To sum up, while this review clearly shows the reservations I have about this book compared to its predecessors, it must still be stressed that Stevens' is a technical author of the highest level. If you do have a need to understand any of the subjects in this book, you won't find a better teacher from which to learn it, and that is why I am still giving the book five stars.
Comment | |
(Report this)