For more than twenty years, serious C programmers have relied on one book for practical, in-depth knowledge of the programming interfaces that drive the UNIX and Linux kernels: W. Richard Stevens’ Advanced Programming in the UNIX Environment . Now, once again, Rich’s colleague Steve Rago has thoroughly updated this classic work. The new third edition supports today’s leading platforms, reflects new technical advances and best practices, and aligns with Version 4 of the Single UNIX Specification.
Steve carefully retains the spirit and approach that have made this book so valuable. Building on Rich’s pioneering work, he begins with files, directories, and processes, carefully laying the groundwork for more advanced techniques, such as signal handling and terminal I/O. He also thoroughly covers threads and multithreaded programming, and socket-based IPC.
This edition covers more than seventy new interfaces, including POSIX asynchronous I/O, spin locks, barriers, and POSIX semaphores. Most obsolete interfaces have been removed, except for a few that are ubiquitous. Nearly all examples have been tested on four modern platforms: Solaris 10, Mac OS X version 10.6.8 (Darwin 10.8.0), FreeBSD 8.0, and Ubuntu version 12.04 (based on Linux 3.2).
As in previous editions, you’ll learn through examples, including more than ten thousand lines of downloadable, ISO C source code. More than four hundred system calls and functions are demonstrated with concise, complete programs that clearly illustrate their usage, arguments, and return values. To tie together what you’ve learned, the book presents several chapter-length case studies, each reflecting contemporary environments.
Advanced Programming in the UNIX Environment has helped generations of programmers write code with exceptional power, performance, and reliability. Now updated for today’s systems, this third edition will be even more valuable.
Preface to the Second Edition
Preface to the First Edition
Chapter 1. UNIX System Overview
Chapter 2. UNIX Standardization and Implementations
Chapter 3. File I/O
Chapter 4. Files and Directories
Chapter 5. Standard I/O Library
Chapter 6. System Data Files and Information
Chapter 7. Process Environment
Chapter 8. Process Control
Chapter 9. Process Relationships
Chapter 10. Signals
Chapter 11. Threads
Chapter 12. Thread Control
Chapter 13. Daemon Processes
Chapter 14. Advanced I/O
Chapter 15. Interprocess Communication
Chapter 16. Network IPC: Sockets
Chapter 17. Advanced IPC
Chapter 18. Terminal I/O
Chapter 19. Pseudo Terminals
Chapter 20. A Database Library
Chapter 21. Communicating with a Network Printer
Appendix A. Function Prototypes
Appendix B. Miscellaneous Source Code
Appendix C. Solutions to Selected Exercises