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