Reviewed in the United States 🇺🇸 on April 23, 2012
......because you never got a clear and useful answer
I am an embedded developer with 19 years experience and forever having had to deal with UNIX derivatives either as cross development platforms ( Solaris, LINUX, QNX ) or as target platforms ( QNX, LINUX, Android ).
I managed to assimilate a lot of concepts and paradigms over the years both during university training and later at work...some complicated some simpler. I was always mystified by UNIX and LINUX and the way the so called 'gurus' loved to throw around their 'file-this....' 'file-that...' 'slash-this..' 'slash-that...' jargon at you.
'Consulted oodles of books to make sense of all the various concepts and build my mental UNIX knowledge tree....alas with mixed success...just when you thought you understood...came along another surprise..."Uhm...well its not quite like that ..."
Until I came along this title. Simply put the author 'knows' what he is talking about ...Not only that....the author 'knows' HOW to impart that knowledge to you the reader and finally and most importantly ... ...the author must have had the burning desire to impart his knowledge to teach and to hold nothing back...no secrets...no caveats.
Everything worthy of knowing about programming 'NIXes and LINUX in particular is summarized in this work as best as would be humanly possible.
What is nice about this tome is that it doesn't stop there, it actually takes you under the hood and shows all the secret ins and outs and details the kind of `implied` know-how that makes UNIX and LINUX experts look like masters of the black art of UNIX magic.
In short to continue borrowing metaphors from the world of Magic, Michael Kerrisk might have broken a Tapu ( by revealing all the trade secrets ) and made himself `unpopular` within the trade...( just kidding! )
I read quite a few books on the internals of the LINUX kernel, some better than others BUT I was surprised to find in this book answers to the many questions I had about the kernel space side of 'NIXes and LINUX in particular.
That was not what I was looking for when buying and reading this book. I was simply looking for a reference to help me with the task of writing software for an embedded application, BUT surprisingly, along the way I finally got to build my own mental UNIX / LINUX knowledge tree.
Like for example * what those 'fd' are really about... * how and ( more importantly ) why 'open()', 'read()' and other file-IO calls behave differently in various situations and with various drivers and the semantics that goes with their use in these situations. * all the details about i-nodes and what they do in a file system. * the user-space kernel-space split even down to the assembly level details of entering the kernel-space and leaving it again during a system call. * ..... * .....
It's all there and more....all presented with a didactic prowess and quality that is typical of this book throughout. Michael Kerrisk wants to make sure that you understand and that you have a minimal number of surprises and gotchas on your way to learning the nuts and bolts of a 'NIX box.
Things like inserting a little note, warning readers on how to verify the author's explanations on the differences of 'read' versus 'execute' permissions on directories...sorry Mr. Kerrisk I had to find out the hard way 'cause I didn't read or look carefully enough otherwise you were telling me that:
"If experimenting to verify the operation of the directory read permission bit, be aware that some Linux distributions alias the ls command to include flags (e.g., -F) that require access to i-node information for files in the directory...."
All in all a great book. There are of course some minor issues such as typos etc. but I'm going to assume a 7 star rating and deduce two stars for the typos so that the result is the 5 stars above.