Review: Advanced Programming in the UNIX Environment

Shaun Rowland

You asked me for a book suggestion for cis 762. The book that comes to mind is "Advanced Programming in the UNIX Environment" but Richard Stevens. It was written in 1993, so it is not a new book, but it discusses the differences between BSD, SVR4 and posix implementations and is still current. There are a couple of chapters that won't be of much use, but the rest of the book as become a Unix systems programming Bible for me. Many concepts are discussed, such as:


        * Standards (and limits)
                - ANSI C
                - POSIX
                - XPG3
                - FIPS 151-1
        * File I/O
                - Unix system calls
        * Files and directories
        * Standard I/O library
        * System data files and information
                - passwd and shadow passwd
                - groups
                - system accounting
                - time and date routines
        * The environment of a Unix process
                - main()
                - process termination
                - command line arguments
                - process environment
                - memory allocation
        * Process control
                - fork()
                - vfork()
                - exit() (wait methods)
                - exec() functions
                - system()
                - more system accounting
                - user identification
        * Process relationships (this is a good chapter)
                - terminal and network logins
                - process groups
                - sessions
                - controlling terminal
                - job control
                - shell execution of programs
        * Signals
                - just about everything you need to know.
        * Terminal I/O
                - this is very useful.  I have answered some complex
                  questions by studying this chapter.
        * Advanced I/O
                - nonblocking I/O
                - record locking
                - SVR4 streams (I dislike these, just has to say that)
                - I/O multiplexing
                - asynchronous I/O
                - memory mapped I/O
        * Daemon processes
        * Interprocess communication
                - pipes
                - coprocesses
                - FIFOs
                - SVR4 IPC (implemented in BSD and Linux as well)
                        - message queues
                        - semaphores
                        - shared memory
        * Advanced interprocess communication
                - stream pipes
                - passing file descriptors between processes in:
                        - SVR4
                        - 4.3 BSD (not useful today)
                        - 4.3+ BSD (4.4 BSD, useful)
        * More, mainly example chapters.

This book is about 720 pages long and costs around $65.95. It is a perfect text for learning Unix systems programming. There are questions at the end of each chapter. I actually did most of the questions in LaTeX, but I skipped some of the last chapters (for instance, I don't have a modem, so the chapter that implemented a modem dialer was useless for me to try). I use this book most of the time. It really is my Bible for systems programming. I think it is a good reference for understanding many things.



Last Modified February 19, 2001