Unix Systems Programming: Communication, Concurrency and Threads, Second Edition
Kay Robbins | Steve Robbins


Compras Nikon
Bluetooth
1 Learn to use sockets, threads, processes and file sharing in
This book is designed to be used as a text book. You will find questions at the end of each chapter and summaries typical of other text book. Usually I stay away from such books when looking for a purely technical reference, but not in this case. I examined several books looking for one that gave me the best overview of some of the more system level programming aspects of UNIX.

Don't be mislead by the title. This book is not for writing device drivers or hacking the kernel. It is very practical. It teaches topics such as process handling, thread handling, file systems and sharing, memory usage, sockets, and even Internet radio.

I bought this book to help me port a WIN32 application that made use of threads, file sharing and sockets. These are very platform specific parts of C++ and required a different implementation between Windows and UNIX. This book did a great job of showing me exactly how to port those areas of my program.

I simply was not able to find a book that had such a broad range of topics in a single book. Many examples in the book.
2 Typical Textbook
It's important for buyers and readers to understand, first and foremost, that this is a text book. You can read in the prelude that this book was the result of teaching in the classroom. Because of this certain aspects of the book are useful to new systems programmers, namely the heavy emphasis on examples and excercises. However, the examples are so large and the is text built around them that you don't get a wide enough understanding of the topic. If your the sort of person who can actually read from cover to coder without jumping around this might work out fine, but for most of us we don't want to read full chapters at a time.

Because of this, this book doesn't cut it as a reference. You read it, you put it on yourself and you find a good reference to put on your desk (Teer or Stevens').

Topics like POSIX Threading are great to have, but it's too big a topic for most systems programming books and pushes out alot of good information in order to facility these larger topics. This really kills the book. Don't think that you can buy this book and then avoid buying a POSIX Threads book; you'd be far better off to buy a more thurough programming book (Teer or Stevens') and then suppliment it with a good solid PThreads book.

One thing that really really bugs me about this book is that it does not dissuse UNIX memory in any detail. There is a small section that explains stacks and heaps, but outside of that there is little memory discussion at all. Topics such as secure programming are scarcely touched, despite being an independant topic.

If you want a good ol' college textbook, complete with examples that aren't all that interesting and lots of "Real World(tm)" discussion then by all means nab this book. But if your a real systems programmer or are trying to become one, do yourself a favor and buy a real systems programming book (Teer or Stevens') and leave this book on the shelf. I bought this book about 6 months ago and already it's sitting on my bookshelf of unused texts. I'd suggest to anyone looking for a Systems Programming text to strongly look at "Solaris Systems Programming" for a far better and comprehensive book.
3 The taboo is broken: a book better than Stevens
If Stevens is the Old Testament this book is the New Testament.

I was thinking lately what it is about Stevens books that has made them the best material in the industry for the past decade. I cant really nail it, if I could I would have been an author myself and make millions, but the other day it suddenly hit me: When I read Stevens books sometimes a question arises and then I pause to think about it, only to turn the page and find the answer witinf for me. It is about being comprehensive, it is about covering all aspects of the topic, thinking forward on behalf of the reader, thinking what the reader may not understand and how to make it clear.

Well Robbins and Robbins belongs to this category of books.
I am a book maniac and I have most of the Unix/Linux programming books out there. This is by far the best systems programming book available.

The other day I had to look up about asynchronous i/o in Linux and its interaction with POSIX real time signals. Opened the book, read the example, downladed the source code, in an hour I was flying and writing an asynchronous web server in Linux.

For the networking stuff I never bothered to read the relevant chapters of the book since Stevens Network programming is the book I was trained by and it is still relevant.

For my threading needs I used to use Butenhof's "Programming with POSIX threads", but this book has great examples and I learned a lot by browsing it. I mean I had a question about signal interaction with threads and the book had a section about it. Come on, it has saved my butt many many times. It is very comprehensive.

I wholeheartedly recomend it to any serious systems programer, beginner or advanced.


4 It really is a very good book.
The best part is the code examples. Neither did I know C , nor I knew Unix before I took this grad level systems programming course. It was a sort of painful for me to muddle thru that class. But I got thru it. Most importantly, I learned a lot about C, systems programming and Unix from the code examples. You read the authors explanation on some topic. You perhaps won't understand what is going on immediately. But You will after you have read the code. I enjoyed reading it. This is a very well organized textbook. It is a good read for people who have some background in C or other languages and want to know systems programming.
However, you should combine it with advanced programming in the UNIX Environment by W.richard Stevens if you are an ambitious UNIX-geek-wannabe.
Advanced programming in the UNIX Environment by W.richard Stevens is a bit dated. But it still complements this book quite a bit.
5 A very good book on UNIX System Programing -
This is the updated second edition that includes all-new chapters on the Web and multicast and a completely revised and updated RPC chapter. Other book chapters on files, signals, semaphores, POSIX threads, and client-server communication were updated and enhanced.

The book is organized twenty-two chapters grouped into four parts. Each part contains topic chapters and project chapters. A topic chapter covers the specified material in a work-along fashion. The topic chapters have many examples and short exercises of the form "try this" or "what happens if". The topic chapters close with one or more exercise sections.

What I liked about the book is that it provides programming exercises for many fundamental concepts in process management, concurrency and communication. These programming exercises are very similar to the exercises you would be doing in a traditional computer science laboratory as part of an operating system course, for instance. Exercises are specified for systematic development, and many can be implemented in under 100 lines of code, which is nice if you want to play with it and experiment different ways of implementing a functionality.

Another important feature of the book is the compliance with the POSIX standards. Since the last edition of the book, a single UNIX specification has been adopted and it is referred to in the book to as POSIX. The authors' examples comply with the POSIX standard.

Something else I really liked is the kind-of support available. The book has its own we site where you can download all the code in the book and email the authors and so on. Check it out at: http://vip.cs.utsa.edu/usp/.

The book basically covers whatever we need know to be able program with threads, TCP/IP, and RPC. The authors explain the essentials of UNIX programming, concentrating on communication, concurrency, and multithreading techniques and why, when, and how to use them in a very tutorial-way using a lot of reusable source code examples that explain syntax along the way.

A nice feature of the book is that it shows how to design complex software to get the best from the UNIX operating system. There are many short examples featured throughout the book and a number of hands-on projects that help readers expand their skill levels. The approach is very practical and uses short code snippets to illustrate how to use system calls.

The book is easy to read and the code examples are complete so that you can compile and run them. This is a nice feature since these exercises and code examples help readers understand and learn the material explained throughout the chapters.

If you want to:

a) Learn UNIX system programming essentials with a concentration on communication, concurrency, and multithreading techniques, with extensive hands-on examples that respect the single UNIX specifications ...

b) Write "correct" code and get the best from your UNIX operating system ...

c) Expand your ideas on how to design and implement robust UNIX software ...

then, check out this book...


6 Best book to start with Unix System Programming......
If you are new to Unix system programming then this book is for you to start system programming. Author have done a great work explaining system programming in detail and with good examples/exercises.

You must have a good understanding of C programming and basic data structure to get the most out of this book.


7 Cumulative Knowledge
At first I wanted to buy 'Advanced Programming in the UNIX(R) Environment by W. Richard Stevens' - I've read that it's very good - but it's a little old (from 1992) and I looked for another.
This one is very easy to read, the code examples are almost always complete, so that you can compile and run them.
The exercises are from the reality and help the reader to understand and to learn the stuff of the book.
There are many additional information, spreadsheets and graphics.
You only should have some experience in writing C code...
8 Cumulative Knowledge
At first I wanted to buy 'Advanced Programming in the UNIX(R) Environment by W. Richard Stevens' - I've read that it's very good - but it's a little old (from 1992) and I looked for another.
The book is very easy to read, the code examples are almost always complete, so that you can compile and run them.
The exercises are from the reality and help the reader to understand and to learn the stuff of the book.
There are many additional information, spreadsheets and graphics.
You only should have some experience in writing C code...
9 Book Overrated
This book does not offer anything more that what the Richard Stevens classics Advanced Programming in the UNIX Environment or UNIX Network Programming Volume Two offer. The titles by Stevens fundamentally break down the concepts of multiprocess, multithreaded, and concurrent scheduling and sychronizational mechanisms much more clearly and throroughly than Practical UNIX Programming. I was ultimately let down from the lack of CD or URL to point to the full sample implementations on all REAL WORK in the book. This book could be ignored when purchasing a UNIX Sytems programming book and one would NOT MISS out on the spectacular. If you MUST HAVE a truly practical UNIX Systems Programming book, then albeit a little older, from 1994 last printing, buy Advanced Programming in the UNIX Environmentt from the late Richard Stevens for the fundamental UNIX APIs on IPC, File I/O, Process Management, Signals and Events and the secondary book, which is best on IPC both covering System V and the standard POSIX, is Stevens' UNIX Network Programming Volume Two.

Practical UNIX Programming poorly covers the underpinnings of POSIX Multithreading, it does not intricately cover the important subtleties in thread termination such as how pthread_exit() really functions and its different functionality against the main threads's exit(). There is NO explanation on one time thread initialization with PTHREAD_ONCE_INITIALIZED macro and pthread_once() function for multithread resource avoidance of resource intitialization duplication. There is NO explanation on the use of the three main multithreaded working models such as Assembly Line or the Pipeline Model, the Worker Crew Model and the Client/Server Model sufficiently for the cost of [$$].

This book is simply another UNIX Programming book, nothing super or spectacular. UNIX IMHO is the ONLY operating system and this read is dry and too short in length to really hold water as time moves on. Truly IF you buy Stevens APUE, UNPVolume_One, UNPVolume_Two and Butenhof's Programming with POSIX Threads there are no other books on UNIX Sytems Programming to consider.
10 Mark Grechanik
Dr.Robbins was my grad advisor. I found in this book the clearness of thoughts and lucid explanations of complex things with which she always amazed me during my work on my master thesis. I recommend everyone to use this book for, as title says,
practical Unix programming.
11 My eyes are open, my jaw has dropped
I happened upon this book (...) while researching System V Semaphores for a perlscript I was designing. I'd read the man pages and google'd about a bit, but still hadn't found anything to dispel the fog or give me confidence that I was heading in the right direction.

Then I found "Practical UNIX Programming", and called off the dogs. Entombed within this wonderful tome was the lucid explanation and insightful discussion I craved -- and practical examples as well!

I would have been content to pay full-price for just chapter 8 and the fetching book spine. And yet I quickly found that every chapter was interesting and meaningful. I'd never had much interest in UNIX programming (as I fancy myself a pure Oracle/Java developer), but was immediately ensnared by the clear writing style and pithy content. I couldn't wait to finish the book.

Now that I've finished the book, I must admit I haven't found a novel so enjoyable since reading Robert Jordan's Shadow Rising. And in contrast to completing a book from the Wheel of Time series, this been an empowering experience. I'm eager to apply my newfound understanding and apply the knowledge gleaned.

So anyway, I'll end this long-winded missive with a big thank you to the authors for forging this gift to humanity.


12 Excellent starting ground to do Unix Programming
I used this book to start to learn from scratch how to programming Unix. This book is self-contained,concise and easy to read. FYI, it is very readable and not dry. There's a number of good diagrams, for example,illustrating file descriptors allocations and the effects of system calls like dup2, etc. The authors uses short code snipplet to illustrate how to use a particular system calls, which I think is rather neat. A number of "projects" very quickly help reader to expand their skill level. Of interest is also a project on distributed "Richard" and "Linda" , the forerunner of Sun's JINI. The authors could have expanded this book another 100 pages and make it a companion to Steven's "Advanced Unix System Programming". I strongly recommend this book to beginners, intermediate Unix Programmers.
13 the best book of its kind....
I bought the copy for my OS course as my 2nd supplymentary book. To read this book is really fun. It clearly tells you how multiprocess, multithread works with good c code. it also covers other interesting topics like socket programming. If you really want to learn unix programming. You must have this book.
14 It's a must for understanding UNIX programming
I bought this book as a reference for my OS course. However, I used this book more than my assigned text book. The provide code are really valuable and it does help me a lot to really understand multiprocess work. there is also another book to read if you want to understand unix programming--> advanced programming in unix environment. with them you won't encounter any diffculity any more in Unix
15 Used this book for a college class taught by the author!
I took a course in Operating Systems with Dr. Steven Robbins at The University of Texas at San Antonio and (naturally) we used this book for understanding the architecture and programming of the UNIX System. The book is much like its author - organized, logical, and clear. Despite being biased, I still heartily recommend this book to anyone who would like to "get to know UNIX better." It is extrememly well organized. The examples are abundant and enlightening. Although the writing can be terse at times, it is always cogent and unambiguous. IMHO, the thing that sets this book a class apart is the constant focus on concurrency and the POSIX standard.
16 Awesome
This is one of the best reference books for UNIX programming I have ever seen. If you plan to write any kind of a distributed or parallel program for UNIX platform this book is a must have. You will find everything you'll ever need for threads, tcp/ip and rpc programming with code pieces that explain syntax and could often be used within your program letter for letter. Just awesome!
17 very bad organization
IT IS A VERY BAD ORGANIZED BOOK ON OPERATION SYSEM. SOMETIME, JUST CAN'T FOLLOW.
18 Excelent. Full theory and great programming projects
With Stevens "Unix network programming" , the best book on Unix programming. Each topic is presented in one chapter and in the following a project is proposed to put in practice those concepts. Not only it explains the old and the new features of Unix, but also it is full of ideas on how to design and implement good software. Though less detailed than Stevens in the description of system calls it shows brilliantly how to design complex software and get the best from the OS. Huge source of ideas. Ideal for those who like to develop software jewels, learn about multithreading programming or even for a practical OS course at the undergraduate level.

Friday, 10-Oct-2008 21:04:18 CDT
Quote of the Day:


It's hard to drive at the limit, but it's harder to know where the limits are.

-- Stirling Moss

"I quite agree with you," said the Duchess; "and the moral of
that is -- `Be what you would seem to be' -- or, if you'd like it put
more simply -- `Never imagine yourself not to be otherwise than what it
might appear to others that what you were or might have been was not
otherwise than what you had been would have appeared to them to be
otherwise.'"
-- Lewis Carrol, "Alice in Wonderland"