Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Advanced Unix Programming (AUP) is a very welcome addition to my programming library. My previous advanced UNIX go-to guide was the Stevens "Advanced Programming in the UNIX Environment" (APUE) book. It has been a great book, but AUP pulls miles ahead because it is, most importantly, up to date and goes beyond APUE by covering advanced networking topics as well.
AUP covers fundamentals like UNIX processes and threads, as well as updated signaling and UNIX timers. It also heavily covers UNIX I/O: Basic and advanced File I/O, networking, and Inter Process Communications. The networking section gets knee deep into sockets, also touches on connection less sockets and out-of-band data. There is also a good example of a simple http server. The examples in the book are very good and the sources are available online: http://basepath.com/aup/download.htm. One drawback of Steven's APUE is the need for a custom common header for all this examples. AUP requires no such header, and all the code necessary for the example is on the page right in front of you. The preface states that the example code is compiled on Linux, Solaris, Free BSD and Darwin (MAC OS X). I have also compiled some of the examples on AIX 5.1.
The book provides a brief history of UNIX and how the different flavors of UNIX spun off. There is also good coverage of UNIX standards and how well different operating systems conform to these standards. AUP includes some time comparisons between the different operating systems where their architecture may differ a little. One such example of this is the difference between write and writev.
The book assumes that you know C and have some basic understanding of UNIX systems. It is well written and should get novice UNIX programmers running quickly. For me, the book will be used mostly as a reference, but it is a great reader and given the exercises at the end of each chapter, it will no doubt be used in advanced UNIX college courses. I'd rate the book a must have for all advanced C/UNIX users.