| | Copyright |
| | List of Tables |
| | Code Examples |
| | Preface |
| | | Second Edition |
| | | Acknowledgments |
| | Part 1: Getting Started |
| | | Chapter 1. History of Linux Development |
| | | Section 1.1. A Short History of Free Unix Software |
| | | Section 1.2. Development of Linux |
| | | Section 1.3. Notional Lineage of Unix Systems |
| | | Section 1.4. Linux Lineage |
| | | Chapter 2. Licenses and Copyright |
| | | Section 2.1. Copyright |
| | | Section 2.2. Licensing |
| | | Section 2.3. Free Software Licenses |
| | | Chapter 3. Online System Documentation |
| | | Section 3.1. The man Pages |
| | | Section 3.2. The Info Pages |
| | | Section 3.3. Other Documentation |
| | Part 2: Development Tools and Environment |
| | | Chapter 4. Development Tools |
| | | Section 4.1. Editors |
| | | Section 4.2. Make |
| | | Section 4.3. The GNU Debugger |
| | | Section 4.4. Tracing Program Actions |
| | | Chapter 5. gcc Options and Extensions |
| | | Section 5.1. gcc Options |
| | | Section 5.2. Header Files |
| | | Chapter 6. The GNU C Library |
| | | Section 6.1. Feature Selection |
| | | Section 6.2. POSIX Interfaces |
| | | Section 6.3. Compatibility |
| | | Chapter 7. Memory Debugging Tools |
| | | Section 7.1. Buggy Code |
| | | Section 7.2. Memory-Checking Tools Included in glibc |
| | | Section 7.3. Finding Memory Leaks with mpr |
| | | Section 7.4. Investigating Memory Errors with Valgrind |
| | | Section 7.5. Electric Fence |
| | | Chapter 8. Creating and Using Libraries |
| | | Section 8.1. Static Libraries |
| | | Section 8.2. Shared Libraries |
| | | Section 8.3. Designing Shared Libraries |
| | | Section 8.4. Building Shared Libraries |
| | | Section 8.5. Installing Shared Libraries |
| | | Section 8.6. Using Shared Libraries |
| | | Chapter 9. Linux System Environment |
| | | Section 9.1. The Process Environment |
| | | Section 9.2. Understanding System Calls |
| | | Section 9.3. Finding Header and Library Files |
| | Part 3: System Programming |
| | | Chapter 10. The Process Model |
| | | Section 10.1. Defining a Process |
| | | Section 10.2. Process Attributes |
| | | Section 10.3. Process Information |
| | | Section 10.4. Process Primitives |
| | | Section 10.5. Simple Children |
| | | Section 10.6. Sessions and Process Groups |
| | | Section 10.7. Introduction to ladsh |
| | | Section 10.8. Creating Clones |
| | | Chapter 11. Simple File Handling |
| | | Section 11.1. The File Mode |
| | | Section 11.2. Basic File Operations |
| | | Section 11.3. Querying and Changing Inode Information |
| | | Section 11.4. Manipulating Directory Entries |
| | | Section 11.5. Manipulating File Descriptors |
| | | Section 11.6. Creating Unnamed Pipes |
| | | Section 11.7. Adding Redirection to ladsh |
| | | Chapter 12. Signal Processing |
| | | Section 12.1. Signal Concepts |
| | | Section 12.2. The Linux (and POSIX) Signal API |
| | | Section 12.3. Available Signals |
| | | Section 12.4. Writing Signal Handlers |
| | | Section 12.5. Reopening Log Files |
| | | Section 12.6. Real-Time Signals |
| | | Section 12.7. Learning About a Signal |
| | | Chapter 13. Advanced File Handling |
| | | Section 13.1. Input and Output Multiplexing |
| | | Section 13.2. Memory Mapping |
| | | Section 13.3. File Locking |
| | | Section 13.4. Alternatives to read() and write() |
| | | Chapter 14. Directory Operations |
| | | Section 14.1. The Current Working Directory |
| | | Section 14.2. Changing the Root Directory |
| | | Section 14.3. Creating and Removing Directories |
| | | Section 14.4. Reading a Directory's Contents |
| | | Section 14.5. File Name Globbing |
| | | Section 14.6. Adding Directories and Globbing to ladsh |
| | | Section 14.7. Walking File System Trees |
| | | Section 14.8. Directory Change Notification |
| | | Chapter 15. Job Control |
| | | Section 15.1. Job Control Basics |
| | | Section 15.2. Job Control in ladsh |
| | | Chapter 16. Terminals and Pseudo Terminals |
| | | Section 16.1. tty Operations |
| | | Section 16.2. termios Overview |
| | | Section 16.3. termios Examples |
| | | Section 16.4. termios Debugging |
| | | Section 16.5. termios Reference |
| | | Section 16.6. Pseudo ttys |
| | | Chapter 17. Networking with Sockets |
| | | Section 17.1. Protocol Support |
| | | Section 17.2. Utility Functions |
| | | Section 17.3. Basic Socket Operations |
| | | Section 17.4. Unix Domain Sockets |
| | | Section 17.5. Networking Machines with TCP/IP |
| | | Section 17.6. Using UDP Datagrams |
| | | Section 17.7. Socket Errors |
| | | Section 17.8. Legacy Networking Functions |
| | | Chapter 18. Time |
| | | Section 18.1. Telling Time and Dates |
| | | Section 18.2. Using Timers |
| | | Chapter 19. Random Numbers |
| | | Section 19.1. Pseudo-Random Numbers |
| | | Section 19.2. Cryptography and Random Numbers |
| | | Chapter 20. Programming Virtual Consoles |
| | | Section 20.1. Getting Started |
| | | Section 20.2. Beeping |
| | | Section 20.3. Determining Whether the Terminal Is a VC |
| | | Section 20.4. Finding the Current VC |
| | | Section 20.5. Managing VC Switching |
| | | Section 20.6. Example: The open Command |
| | | Chapter 21. The Linux Console |
| | | Section 21.1. Capability Databases |
| | | Section 21.2. Glyphs, Characters, and Maps |
| | | Section 21.3. Linux Console Capabilities |
| | | Section 21.4. Direct Screen Writing |
| | | Chapter 22. Writing Secure Programs |
| | | Section 22.1. When Security Matters |
| | | Section 22.2. Minimizing the Opportunity for Attack |
| | | Section 22.3. Common Security Holes |
| | | Section 22.4. Running as a Daemon |
| | Part 4: Development Libraries |
| | | Chapter 23. String Matching |
| | | Section 23.1. Globbing Arbitrary Strings |
| | | Section 23.2. Regular Expressions |
| | | Chapter 24. Terminal Handling with S-Lang |
| | | Section 24.1. Input Handling |
| | | Section 24.2. Output Handling |
| | | Chapter 25. A Hashed Database Library |
| | | Section 25.1. Overview |
| | | Section 25.2. Basic Operations |
| | | Section 25.3. Reading Records |
| | | Section 25.4. Modifying the Database |
| | | Section 25.5. Example |
| | | Chapter 26. Parsing Command-Line Options |
| | | Section 26.1. The Option Table |
| | | Section 26.2. Using the Option Table |
| | | Section 26.3. Using Callbacks |
| | | Section 26.4. Error Handling |
| | | Section 26.5. Option Aliasing |
| | | Section 26.6. Parsing Argument Strings |
| | | Section 26.7. Handling Extra Arguments |
| | | Section 26.8. Sample Application |
| | | Chapter 27. Dynamic Loading at Run Time |
| | | Section 27.1. The dl Interface |
| | | Chapter 28. User Identification and Authentication |
| | | Section 28.1. ID-to-Name Translation |
| | | Section 28.2. Pluggable Authentication Modules |
| | Appendices |
| | | Appendix A. Header Files |
| | | Appendix B. ladsh Source Code |
| | Glossary |
| | Bibliography |
| | Index |