Advanced Programming in the UNIX Environment: Second Edition [Electronic resources]

W. Richard Stevens; Stephen A. Rago

نسخه متنی -صفحه : 369/ 1
نمايش فراداده

  • Copyright

    Praise for Advanced Programming in the UNIX® Environment, Second Edition

    Praise for the First Edition

    Addison-Wesley Professional Computing Series

    Foreword

    Preface

    Introduction

    Changes from the First Edition

    Acknowledgments

    Preface to the First Edition

    Introduction

    Unix Standards

    Organization of the Book

    Examples in the Text

    Systems Used to Test the Examples

    Acknowledgments

    Chapter 1. UNIX System Overview

    Section 1.1. Introduction

    Section 1.2. UNIX Architecture

    Section 1.3. Logging In

    Section 1.4. Files and Directories

    Section 1.5. Input and Output

    Section 1.6. Programs and Processes

    Section 1.7. Error Handling

    Section 1.8. User Identification

    Section 1.9. Signals

    Section 1.10. Time Values

    Section 1.11. System Calls and Library Functions

    Section 1.12. Summary

    Exercises

    Chapter 2. UNIX Standardization and Implementations

    Section 2.1. Introduction

    Section 2.2. UNIX Standardization

    Section 2.3. UNIX System Implementations

    Section 2.4. Relationship of Standards and Implementations

    Section 2.5. Limits

    Section 2.6. Options

    Section 2.7. Feature Test Macros

    Section 2.8. Primitive System Data Types

    Section 2.9. Conflicts Between Standards

    Section 2.10. Summary

    Exercises

    Chapter 3. File I/O

    Section 3.1. Introduction

    Section 3.2. File Descriptors

    Section 3.3. open Function

    Section 3.4. creat Function

    Section 3.5. close Function

    Section 3.6. lseek Function

    Section 3.7. read Function

    Section 3.8. write Function

    Section 3.9. I/O Efficiency

    Section 3.10. File Sharing

    Section 3.11. Atomic Operations

    Section 3.12. dup and dup2 Functions

    Section 3.13. sync, fsync, and fdatasync Functions

    Section 3.14. fcntl Function

    Section 3.15. ioctl Function

    Section 3.16. /dev/fd

    Section 3.17. Summary

    Exercises

    Chapter 4. Files and Directories

    Section 4.1. Introduction

    Section 4.2. stat, fstat, and lstat Functions

    Section 4.3. File Types

    Section 4.4. Set-User-ID and Set-Group-ID

    Section 4.5. File Access Permissions

    Section 4.6. Ownership of New Files and Directories

    Section 4.7. access Function

    Section 4.8. umask Function

    Section 4.9. chmod and fchmod Functions

    Section 4.10. Sticky Bit

    Section 4.11. chown, fchown, and lchown Functions

    Section 4.12. File Size

    Section 4.13. File Truncation

    Section 4.14. File Systems

    Section 4.15. link, unlink, remove, and rename Functions

    Section 4.16. Symbolic Links

    Section 4.17. symlink and readlink Functions

    Section 4.18. File Times

    Section 4.19. utime Function

    Section 4.20. mkdir and rmdir Functions

    Section 4.21. Reading Directories

    Section 4.22. chdir, fchdir, and getcwd Functions

    Section 4.23. Device Special Files

    Section 4.24. Summary of File Access Permission Bits

    Section 4.25. Summary

    Exercises

    Chapter 5. Standard I/O Library

    Section 5.1. Introduction

    Section 5.2. Streams and FILE Objects

    Section 5.3. Standard Input, Standard Output, and Standard Error

    Section 5.4. Buffering

    Section 5.5. Opening a Stream

    Section 5.6. Reading and Writing a Stream

    Section 5.7. Line-at-a-Time I/O

    Section 5.8. Standard I/O Efficiency

    Section 5.9. Binary I/O

    Section 5.10. Positioning a Stream

    Section 5.11. Formatted I/O

    Section 5.12. Implementation Details

    Section 5.13. Temporary Files

    Section 5.14. Alternatives to Standard I/O

    Section 5.15. Summary

    Exercises

    Chapter 6. System Data Files and Information

    Section 6.1. Introduction

    Section 6.2. Password File

    Section 6.3. Shadow Passwords

    Section 6.4. Group File

    Section 6.5. Supplementary Group IDs

    Section 6.6. Implementation Differences

    Section 6.7. Other Data Files

    Section 6.8. Login Accounting

    Section 6.9. System Identification

    Section 6.10. Time and Date Routines

    Section 6.11. Summary

    Exercises

    Chapter 7. Process Environment

    Section 7.1. Introduction

    Section 7.2. main Function

    Section 7.3. Process Termination

    Section 7.4. Command-Line Arguments

    Section 7.5. Environment List

    Section 7.6. Memory Layout of a C Program

    Section 7.7. Shared Libraries

    Section 7.8. Memory Allocation

    Section 7.9. Environment Variables

    Section 7.10. setjmp and longjmp Functions

    Section 7.11. getrlimit and setrlimit Functions

    Section 7.12. Summary

    Exercises

    Chapter 8. Process Control

    Section 8.1. Introduction

    Section 8.2. Process Identifiers

    Section 8.3. fork Function

    Section 8.4. vfork Function

    Section 8.5. exit Functions

    Section 8.6. wait and waitpid Functions

    Section 8.7. waitid Function

    Section 8.8. wait3 and wait4 Functions

    Section 8.9. Race Conditions

    Section 8.10. exec Functions

    Section 8.11. Changing User IDs and Group IDs

    Section 8.12. Interpreter Files

    Section 8.13. system Function

    Section 8.14. Process Accounting

    Section 8.15. User Identification

    Section 8.16. Process Times

    Section 8.17. Summary

    Exercises

    Chapter 9. Process Relationships

    Section 9.1. Introduction

    Section 9.2. Terminal Logins

    Section 9.3. Network Logins

    Section 9.4. Process Groups

    Section 9.5. Sessions

    Section 9.6. Controlling Terminal

    Section 9.7. tcgetpgrp, tcsetpgrp, and tcgetsid Functions

    Section 9.8. Job Control

    Section 9.9. Shell Execution of Programs

    Section 9.10. Orphaned Process Groups

    Section 9.11. FreeBSD Implementation

    Section 9.12. Summary

    Exercises

    Chapter 10. Signals

    Section 10.1. Introduction

    Section 10.2. Signal Concepts

    Section 10.3. signal Function

    Section 10.4. Unreliable Signals

    Section 10.5. Interrupted System Calls

    Section 10.6. Reentrant Functions

    Section 10.7. SIGCLD Semantics

    Section 10.8. Reliable-Signal Terminology and Semantics

    Section 10.9. kill and raise Functions

    Section 10.10. alarm and pause Functions

    Section 10.11. Signal Sets

    Section 10.12. sigprocmask Function

    Section 10.13. sigpending Function

    Section 10.14. sigaction Function

    Section 10.15. sigsetjmp and siglongjmp Functions

    Section 10.16. sigsuspend Function

    Section 10.17. abort Function

    Section 10.18. system Function

    Section 10.19. sleep Function

    Section 10.20. Job-Control Signals

    Section 10.21. Additional Features

    Section 10.22. Summary

    Exercises

    Chapter 11. Threads

    Section 11.1. Introduction

    Section 11.2. Thread Concepts

    Section 11.3. Thread Identification

    Section 11.4. Thread Creation

    Section 11.5. Thread Termination

    Section 11.6. Thread Synchronization

    Section 11.7. Summary

    Exercises

    Chapter 12. Thread Control

    Section 12.1. Introduction

    Section 12.2. Thread Limits

    Section 12.3. Thread Attributes

    Section 12.4. Synchronization Attributes

    Section 12.5. Reentrancy

    Section 12.6. Thread-Specific Data

    Section 12.7. Cancel Options

    Section 12.8. Threads and Signals

    Section 12.9. Threads and fork

    Section 12.10. Threads and I/O

    Section 12.11. Summary

    Exercises

    Chapter 13. Daemon Processes

    Section 13.1. Introduction

    Section 13.2. Daemon Characteristics

    Section 13.3. Coding Rules

    Section 13.4. Error Logging

    Section 13.5. Single-Instance Daemons

    Section 13.6. Daemon Conventions

    Section 13.7. ClientServer Model

    Section 13.8. Summary

    Exercises

    Chapter 14. Advanced I/O

    Section 14.1. Introduction

    Section 14.2. Nonblocking I/O

    Section 14.3. Record Locking

    Section 14.4. STREAMS

    Section 14.5. I/O Multiplexing

    Section 14.6. Asynchronous I/O

    Section 14.7. readv and writev Functions

    Section 14.8. readn and writen Functions

    Section 14.9. Memory-Mapped I/O

    Section 14.10. Summary

    Exercises

    Chapter 15. Interprocess Communication

    Section 15.1. Introduction

    Section 15.2. Pipes

    Section 15.3. popen and pclose Functions

    Section 15.4. Coprocesses

    Section 15.5. FIFOs

    Section 15.6. XSI IPC

    Section 15.7. Message Queues

    Section 15.8. Semaphores

    Section 15.9. Shared Memory

    Section 15.10. ClientServer Properties

    Section 15.11. Summary

    Exercises

    Chapter 16. Network IPC: Sockets

    Section 16.1. Introduction

    Section 16.2. Socket Descriptors

    Section 16.3. Addressing

    Section 16.4. Connection Establishment

    Section 16.5. Data Transfer

    Section 16.6. Socket Options

    Section 16.7. Out-of-Band Data

    Section 16.8. Nonblocking and Asynchronous I/O

    Section 16.9. Summary

    Exercises

    Chapter 17. Advanced IPC

    Section 17.1. Introduction

    Section 17.2. STREAMS-Based Pipes

    Section 17.3. UNIX Domain Sockets

    Section 17.4. Passing File Descriptors

    Section 17.5. An Open Server, Version 1

    Section 17.6. An Open Server, Version 2

    Section 17.7. Summary

    Exercises

    Chapter 18. Terminal I/O

    Section 18.1. Introduction

    Section 18.2. Overview

    Section 18.3. Special Input Characters

    Section 18.4. Getting and Setting Terminal Attributes

    Section 18.5. Terminal Option Flags

    Section 18.6. stty Command

    Section 18.7. Baud Rate Functions

    Section 18.8. Line Control Functions

    Section 18.9. Terminal Identification

    Section 18.10. Canonical Mode

    Section 18.11. Noncanonical Mode

    Section 18.12. Terminal Window Size

    Section 18.13. termcap, terminfo, and curses

    Section 18.14. Summary

    Exercises

    Chapter 19. Pseudo Terminals

    Section 19.1. Introduction

    Section 19.2. Overview

    Section 19.3. Opening Pseudo-Terminal Devices

    Section 19.4. pty_fork Function

    Section 19.5. pty Program

    Section 19.6. Using the pty Program

    Section 19.7. Advanced Features

    Section 19.8. Summary

    Exercises

    Chapter 20. A Database Library

    Section 20.1. Introduction

    Section 20.2. History

    Section 20.3. The Library

    Section 20.4. Implementation Overview

    Section 20.5. Centralized or Decentralized?

    Section 20.6. Concurrency

    Section 20.7. Building the Library

    Section 20.8. Source Code

    Section 20.9. Performance

    Section 20.10. Summary

    Exercises

    Chapter 21. Communicating with a Network Printer

    Section 21.1. Introduction

    Section 21.2. The Internet Printing Protocol

    Section 21.3. The Hypertext Transfer Protocol

    Section 21.4. Printer Spooling

    Section 21.5. Source Code

    Section 21.6. Summary

    Exercises

    Appendix A. Function Prototypes

    Appendix B. Miscellaneous Source Code

    Section B.1. Our Header File

    B.2 Standard Error Routines

    Appendix C. Solutions to Selected Exercises

    Chapter 1

    Chapter 2

    Chapter 3

    Chapter 4

    Chapter 5

    Chapter 6

    Chapter 7

    Chapter 8

    Chapter 9

    Chapter 10

    Chapter 11

    Chapter 12

    Chapter 13

    Chapter 14

    Chapter 15

    Chapter 16

    Chapter 17

    Chapter 18

    Chapter 19

    Chapter 20

    Chapter 21

    Bibliography

    Index