- A PTY Demonstration
- A1 Static Program Analysis
- A2 Finding Dynamic Memory Errors
- A3 Profiling
- About the Technical Reviewers
- Access Testing File Permissions
- Accessing Devices by Opening Files
- Acknowledgments
- Advanced Linux Programming
- Allocation
- Allocation and Deallocation
- An Example Program
- An Example Using Local Namespace Sockets
- Application
- Archives
- Assembler Instructions
- Attachment and Detachment
- Authenticating Users
- Automatic Formatting
- Automating the Process with GNU Make
- B1 Reading and Writing Data
- B2 stat
- B3 Vector Reads and Writes
- B4 Relation to Standard C Library IO Functions
- B5 Other File Operations
- B6 Reading Directory Contents
- Buffer Overruns
- Caveats
- Cleaning Up Children Asynchronously
- Cleanup Handlers
- Clobbers
- Coding Defensively
- Common Functions
- Compiling a Single Source File
- Compiling with GCC
- Condition Variables
- Controlling and Deallocating Shared Memory
- Conventions
- Converting an asm to Assembly Instructions
- CPU Information
- D1 General Information
- D2 Information About GNULinux Software
- D3 Other Sites
- Deadlocks with Two or More Threads
- Debugging
- Debugging with GNU Debugger GDB
- Devfull
- Device Entries
- Device Numbers
- Device Types
- Devices
- Devnull
- Devzero
- Drives and Partitions
- Dynamic Loading and Unloading
- Editing with Emacs
- Errors and Resource Allocation
- Example
- Example Programs
- Extended Assembly Syntax
- Extracting Information from proc
- Fast Local Communication
- Fcntl Locks and Other File Operations
- File System Permissions
- Finding More Information
- Finishing Up
- Fsync and fdatasync Flushing Disk Buffers
- Getrlimit and setrlimit Resource Limits
- Getrusage Process Statistics
- Gettimeofday Wall Clock Time
- Getting Started
- GNU and Linux
- GNULinux Command Line Conventions
- GNULinux Thread Implementation
- Hardware Devices
- Header Files
- How to Apply These Terms to Your New Programs
- Requirements on Both Unmodified and Modified Versions
- Appendixes 257
- Scope of License
- Implementation
- Index
- Info
- Informitcom
- Initializing Semaphores
- Inline Assembly Code
- Inputs
- Interaction With the Execution Environment
- Internet Domain Sockets
- Interprocess Communication
- Introduction
- Ioctl
- Requirements on Modified Works
- Joining Threads
- Killing a Process
- Library Dependencies
- Linking Object Files
- Linux System
- Local Sockets
- Locks
- Loopback Devices
- Low Level
- Maintenance and Portability Issues
- Man Pages
- Mapped Memory
- Mapping an Ordinary File
- Memory Usage
- Modules
- More on Thread IDs
- Mounts
- Mprotect Setting Memory Permissions
- Mutex Deadlocks
- Nanosleep High Precision Sleeping
- Nonblocking Mutex Tests
- Open Publication Policy Appendix
- Optimization Issues
- Other Development Tools
- Other Uses for mmap
- Outputs
- Overview
- Passing Data to Threads
- Pipes
- Preamble
- Proc File System
- Process Argument List
- Process Entries
- Process Environment
- Process Executable
- Process File Descriptors
- Process IDs
- Process Memory Statistics
- Process Scheduling
- Process Statistics
- Process Termination
- Process User IDs and Process Group IDs
- Processes
- Processes Semaphores
- Processes Vs Threads
- Procself
- Programming
- Pros and Cons - 2
- Race Conditions
- Race Conditions in tmp
- Random Number Devices
- Readlink Reading Symbolic Links
- Real and Effective IDs
- Redirecting the Standard Input Output and Error Streams
- S
- Security
- Security Hole Programs Without Execute Permissions
- Semaphores for Threads
- Sendfile Fast Data Transfers
- Serial Port Information
- Servers
- Setitimer Setting Interval Timers
- Setuid Programs
- Shared Access to a File
- Shared Libraries
- Signal Handling
- Signals
- Simple Inline Assembly
- Socket Concepts
- Socket Pairs
- Sockets
- Source Code
- Standard IO
- Standard Libraries
- Sticky Bits
- Synchronization and Critical Sections
- Synchronous and Asynchronous Threads
- Syntax Highlighting
- Sysinfo Obtaining System Statistics
- System Call Failures
- System Calls
- System Statistics
- Table of Signals
- Tell Us What You Think
- Terms and Conditions for Copying Distribution and Modification
- The Argument List
- The clone System Call
- The dev Directory
- The GNU General Public License
- The Memory Model
- The mlock Family Locking Physical Memory
- The Superuser
- The wait System Calls
- Thread Attributes
- Thread Cancellation
- Thread Cleanup in C
- Thread Creation
- Thread Return Values
- Threads
- Thread Specific Data
- Uname
- Uncancelable Critical Sections
- Users and Groups
- Using assert
- Using fork and exec
- Using getoptlong
- Using strace
- Using system
- Using system or popen
- Using the Server
- Version Information
- Good Practice Recommendations
- License Options
- Viewing Active Processes
- Wait and Post Operations
- Waiting for Process Termination
- When to Use Assembly Code
- Who Should Read This Book
- Writing and Using Libraries
- Zombie Processes