Dedication;Foreword;Preface; Audience and Assumptions; Contents of This Book; Versions Covered in This Book; Conventions Used in This Book; Using Code Examples; SafariĀ® Books Online; How to Contact Us; Acknowledgments;Chapter 1: Introduction and Essential Concepts; 1.1 System Programming; 1.2 APIs and ABIs; 1.3 Standards; 1.4 Concepts of Linux Programming; 1.5 Getting Started with System Programming;Chapter 2: File I/O; 2.1 Opening Files; 2.2 Reading via read(); 2.
3 Writing with write(); 2.4 Synchronized I/O; 2.5 Direct I/O; 2.6 Closing Files; 2.7 Seeking with lseek(); 2.8 Positional Reads and Writes; 2.9 Truncating Files; 2.10 Multiplexed I/O; 2.
11 Kernel Internals; 2.12 Conclusion;Chapter 3: Buffered I/O; 3.1 User-Buffered I/O; 3.2 Standard I/O; 3.3 Opening Files; 3.4 Opening a Stream via File Descriptor; 3.5 Closing Streams; 3.6 Reading from a Stream; 3.
7 Writing to a Stream; 3.8 Sample Program Using Buffered I/O; 3.9 Seeking a Stream; 3.10 Flushing a Stream; 3.11 Errors and End-of-File; 3.12 Obtaining the Associated File Descriptor; 3.13 Controlling the Buffering; 3.14 Thread Safety; 3.
15 Critiques of Standard I/O; 3.16 Conclusion;Chapter 4: Advanced File I/O; 4.1 Scatter/Gather I/O; 4.2 Event Poll; 4.3 Mapping Files into Memory; 4.4 Advice for Normal File I/O; 4.5 Synchronized, Synchronous, and Asynchronous Operations; 4.6 I/O Schedulers and I/O Performance; 4.
7 Conclusion;Chapter 5: Process Management; 5.1 Programs, Processes, and Threads; 5.2 The Process ID; 5.3 Running a New Process; 5.4 Terminating a Process; 5.5 Waiting for Terminated Child Processes; 5.6 Users and Groups; 5.7 Sessions and Process Groups; 5.
8 Daemons; 5.9 Conclusion;Chapter 6: Advanced Process Management; 6.1 Process Scheduling; 6.2 The Completely Fair Scheduler; 6.3 Yielding the Processor; 6.4 Process Priorities; 6.5 Processor Affinity; 6.6 Real-Time Systems; 6.
7 Resource Limits;Chapter 7: Threading; 7.1 Binaries, Processes, and Threads; 7.2 Multithreading; 7.3 Threading Models; 7.4 Threading Patterns; 7.5 Concurrency, Parallelism, and Races; 7.6 Synchronization; 7.7 Pthreads; 7.
8 Further Study;Chapter 8: File and Directory Management; 8.1 Files and Their Metadata; 8.2 Directories; 8.3 Links; 8.4 Copying and Moving Files; 8.5 Device Nodes; 8.6 Out-of-Band Communication; 8.7 Monitoring File Events;Chapter 9: Memory Management; 9.
1 The Process Address Space; 9.2 Allocating Dynamic Memory; 9.3 Managing the Data Segment; 9.4 Anonymous Memory Mappings; 9.5 Advanced Memory Allocation; 9.6 Debugging Memory Allocations; 9.7 Stack-Based Allocations; 9.8 Choosing a Memory Allocation Mechanism; 9.
9 Manipulating Memory; 9.10 Locking Memory; 9.11 Opportunistic Allocation;Chapter 10: Signals; 10.1 Signal Concepts; 10.2 Basic Signal Management; 10.3 Sending a Signal; 10.4 Reentrancy; 10.5 Signal Sets; 10.
6 Blocking Signals; 10.7 Advanced Signal Management; 10.8 Sending a Signal with a Payload; 10.9 A Flaw in Unix?;Chapter 11: Time; 11.1 Time''s Data Structures; 11.2 POSIX Clocks; 11.3 Getting the Current Time of Day; 11.4 Setting the Current Time of Day; 11.
5 Playing with Time; 11.6 Tuning the System Clock; 11.7 Sleeping and Waiting; 11.8 Timers;GCC Extensions to the C Language; GNU C; Inline Functions; Suppressing Inlining; Pure Functions; Constant Functions; Functions That Do Not Return; Functions That Allocate Memory; Forcing Callers to Check the Return Value; Marking Functions as Deprecated; Marking Functions as Used; Marking Functions or Parameters as Unused; Packing a Structure; Increasing the Alignment of a Variable; Placing Global Variables in a Register; Branch Annotation; Getting the Type of an Expression; Getting the Alignment of a Type; The Offset of a Member Within a Structure; Obtaining the Return Address of a Function; Case Ranges; Void and Function Pointer Arithmetic; More Portable and More Beautiful in One Fell Swoop;Bibliography; Books on the C Programming Language; Books on Linux Programming; Books on the Linux Kernel; Books on Operating System Design;Index;Colophon;.