Rating: Summary: get a copy! Review: This book covers several intermediate/advanced topics in Linux programming, including: using temp files, creating static and shared libraries, using pthreads, shared memory, semaphores, mutexes, pipes, /dev and /proc filesystems, and much more.Everything is well-written, clearly explained, and targeted towards intermediate programmers looking for explanations and applications of advanced topics. Complementary to this book is Neil Matthew's and Richard Stones' "Professional Linux Programming". Between these two books, you will have a very good reference library at your disposal.
Rating: Summary: One half of a good Linux programmer's library... Review: This book covers several intermediate/advanced topics in Linux programming, including: using temp files, creating static and shared libraries, using pthreads, shared memory, semaphores, mutexes, pipes, /dev and /proc filesystems, and much more. Everything is well-written, clearly explained, and targeted towards intermediate programmers looking for explanations and applications of advanced topics. Complementary to this book is Neil Matthew's and Richard Stones' "Professional Linux Programming". Between these two books, you will have a very good reference library at your disposal.
Rating: Summary: Excellent, buy it, read it then read it again... Review: This book details literally hundreds of bits of information that you'll otherwise spend hours searching for during your involvement with Linux programming. Like, how to create a shared library, using fork, synchronization objects, and more and more and more in an exceptionally well considered, well laid-out format that dispenses with the fluff and provides just superb organization of content. Note that in this "deep-bowing" praise, that much of the information in this book is available (buried) in man pages and elsewhere and that these topics covered are certainly not new, they are simply concisely presented here with direct relation to your use of them for your Linux-based programming needs. The book *far* exceeded my expectations and I'd happily recommend it to all of the Linux programming/development mailing list readers in the world...if for no other reason than to save countless hours explaining what is covered in this book. Very C-oriented, naturally; doesn't really get into higher-level application development or design issues, stays right at the sweet-spot of Advanced, Linux and Programming from the *operating system* perspective where it is clear from the code examples, which nicely fit within just a few lines, that these authors *meant* to write a book about what they know and do and love. Tap into their brains, buy the book, read it then read it again. If Linux *system-level* programming is on your agenda, you need this book and I promise that you won't be disappointed. If higher level application programming is your bag, you probably still need this book however, you may not be as concerned with the system details to make my above promise come true...buy something on Qt or Gnome instead :) Note that you won't get a lot of operating system fundamentals, theory of operation or other academic texts on that broad topic, rather, just useful "stuff" to write programs for Linux-based systems.
Rating: Summary: Good Quality Review: This book is mostly on system programming. The title is accurate. The chapter on "Threads" is outstanding, which is not a topic in any other Linux book I've read. It talks about many pitfalls you may encounter and gives plenty of code with good interpretation. I don't have hands-on experience in threads. Reading this chapter helps understand Linux OS. The short chapter on in-line assembly is the most difficult to follow (my x86 experience started and stopped with 8086 instruction set). This also distinguishes this book from any other. Description of creating shared libraries is more thorough than Michael Johnson's book IMHO. Some topics, not really programming, are nonetheless interesting to read and hard to find in other sources (loopback filesystems e.g.) Overall, the book is technically sound and the text full of authors' wisdom. The authors could have made the book more pedagogically easier. Small things like telling readers "in" in "sockaddr_in" and "sin_family" probably means "internet" and "un" in "sockaddr_un" and "sun_family" means "unix". Describing arguments of each syscall or function should be accompanied by syntax (synopsis). Some important topics such as file descriptor multiplexing and daemons are omitted. (Daemon could be discussed in Chapter 11). Termio is almost not treated. The IPC chapter, relatively weak, is missing message queues. Finally, the publisher chose a very small font completely ignoring the fact that the Linux people often burn midnight oil!
Rating: Summary: the title is misleading. Review: this book is not doing its job for the beginners nor serving for the advanced programmers
Rating: Summary: Concise intro to Linux systems programming Review: This book offers a concise introduction to systems programming on Linux. While the title includes the word "Advanced", it is, as others have noted, an introductory book. It is only "Advanced" in the sense that it assumes that the reader is already a competent C programmer. The main focus on the UNIX programming section is on threads, IPC and processes. It also includes a concise primer on using tools such as gdb, make, gcc, and emacs. The second part focuses on Linux specifics: Devices, the proc filesystem and Linux system calls. There's also a section on inline assembly, and security (not really Linux specific), and the book ends with a sample application. The reason this book gets "only" 4 stars is that I find it too Linux-centric. For example, the authors recommend getopt_long, which is not portable, though it is convenient. autoconf and libtool, which are essential to obtain maintain portability across multiple gcc versions, are not even mentioned. On the other hand, the in-depth coverage of Linux features is useful. But it would be nice if the authors were more clear about which functions were Linux specific, and which were general POSIX /XOpen calls. The highlight of the book is the sample application. The application is a simple web-server that uses dynamically loaded modules. http://webserver/foobar runs the foobar module. I consider dynamic "modular programming" ("plugins") to be an important and neglected programming paradigm, concealed beneath hype about "Object Oriented" programming. Most large-scale architectures make heavy use of modules. For example, KDE, GNOME, Apache, Perl, the Linux kernel, and Mozilla all make heavy use of dynamically loaded modules. The sample application gives some insight into how large scale modular projects work. My conclusion -- this book is certainly a worthwhile addition to a Linux programmers bookshelf, though I still consider "Beginning Linux Programming" (Stones/Matthew) to be the best introductory book for a complete introduction to programming on Linux, and more generally, UNIX.
Rating: Summary: Concise intro to Linux systems programming Review: This book offers a concise introduction to systems programming on Linux. While the title includes the word "Advanced", it is, as others have noted, an introductory book. It is only "Advanced" in the sense that it assumes that the reader is already a competent C programmer. The main focus on the UNIX programming section is on threads, IPC and processes. It also includes a concise primer on using tools such as gdb, make, gcc, and emacs. The second part focuses on Linux specifics: Devices, the proc filesystem and Linux system calls. There's also a section on inline assembly, and security (not really Linux specific), and the book ends with a sample application. The reason this book gets "only" 4 stars is that I find it too Linux-centric. For example, the authors recommend getopt_long, which is not portable, though it is convenient. autoconf and libtool, which are essential to obtain maintain portability across multiple gcc versions, are not even mentioned. On the other hand, the in-depth coverage of Linux features is useful. But it would be nice if the authors were more clear about which functions were Linux specific, and which were general POSIX /XOpen calls. The highlight of the book is the sample application. The application is a simple web-server that uses dynamically loaded modules. http://webserver/foobar runs the foobar module. I consider dynamic "modular programming" ("plugins") to be an important and neglected programming paradigm, concealed beneath hype about "Object Oriented" programming. Most large-scale architectures make heavy use of modules. For example, KDE, GNOME, Apache, Perl, the Linux kernel, and Mozilla all make heavy use of dynamically loaded modules. The sample application gives some insight into how large scale modular projects work. My conclusion -- this book is certainly a worthwhile addition to a Linux programmers bookshelf, though I still consider "Beginning Linux Programming" (Stones/Matthew) to be the best introductory book for a complete introduction to programming on Linux, and more generally, UNIX.
Rating: Summary: Looking for more than basics? Here's a good one Review: This book was a pleasant surprise. Not 700-1000 pages, but just above 300 pages and packed with information and small workable c-examples. I was walked through creating basic applications, shared & static libraries, sockets, pipes and security, forks/threads and detailed expamples on synchronization mechanisms. The book also guides you through creation of a relatively simple web server with plugin-modules. Quite fun ! So in addition to discover how typical intermediate/advanced programming tasks were handled in Linux I also learned a lot more on how the system works. No shell programming here - only C. Keep your Linux box close by when reading!
Rating: Summary: Weak Review: This is undoubtedly an ambitious book, covering some of the most complicated (and neglected) topics in the world of Linux programming. Unfortunately, it suffers from some critical defects. The first two chapters are the obligatory redundant recycling of UNIX fundamentals that is the hallmark of lazy authors. Face it: if you don't know what emacs or a shell is, you shouldn't be reading this book; if this is the best opening you can come up with, you shouldn't be writing it either. While the range of subjects is broad, the authors fail to cover them in sufficient depth. For example, sockets receive a scant five pages and the examples only treat UNIX domain sockets. Who cares about UNIX domain sockets? Why are there no examples of multi-threaded Internet domain socket servers? To be fair, the coverage of the Linux-specific material is decent, but doesn't justify the price tag. Bottom line: this is a good introduction to the subject of threads and Linux technicals, but will leave you needing more. ..
Rating: Summary: I recommend it to everyone ! Review: This is very very usefull book for those, who have some knowledge in basic Linux or Win32 programming. It is very clear style of explanation, very usefull examples and detail review on key concepts. The authors try to learn us to write good, professional code and do not make some dummy faults. If you want to be profi - this stuff is for you. Vadim Kataev
|