Write software that draws directly on services offered by the Linux kernel and core system libraries. With this comprehensive book, Linux kernel contributor Robert Love provides you with a tutorial on Linux system programming, a reference manual on Linux system calls, and an insider's guide to writing smarter, faster code. Love clearly distinguishes between POSIX standard functions and special services offered only by Linux. With a new chapter on multithreading, this updated and expanded edition provides an in-depth look at Linux from both a theoretical and applied perspective over a wide…mehr
Write software that draws directly on services offered by the Linux kernel and core system libraries. With this comprehensive book, Linux kernel contributor Robert Love provides you with a tutorial on Linux system programming, a reference manual on Linux system calls, and an insider's guide to writing smarter, faster code. Love clearly distinguishes between POSIX standard functions and special services offered only by Linux. With a new chapter on multithreading, this updated and expanded edition provides an in-depth look at Linux from both a theoretical and applied perspective over a wide range of programming topics, including: A Linux kernel, C library, and C compiler overview Basic I/O operations, such as reading from and writing to files Advanced I/O interfaces, memory mappings, and optimization techniques The family of system calls for basic process management Advanced process management, including real-time processes Thread concepts, multithreaded programming, and Pthreads File and directory management Interfaces for allocating memory and optimizing memory access Basic and advanced signal interfaces, and their role on the system Clock management, including POSIX clocks and high-resolution timersHinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
Robert Love has been a Linux user and hacker since the early days. He is active in--and passionate about--the Linux kernel and GNOME desktop communities. His recent contributions to the Linux kernel include work on the kernel event layer and inotify. GNOME-related contributions include Beagle, GNOME Volume Manager, NetworkManager, and Project Utopia. Currently, Robert works in the Open Source Program Office at Google.
Inhaltsangabe
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
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
Es gelten unsere Allgemeinen Geschäftsbedingungen: www.buecher.de/agb
Impressum
www.buecher.de ist ein Internetauftritt der buecher.de internetstores GmbH
Geschäftsführung: Monica Sawhney | Roland Kölbl | Günter Hilger
Sitz der Gesellschaft: Batheyer Straße 115 - 117, 58099 Hagen
Postanschrift: Bürgermeister-Wegele-Str. 12, 86167 Augsburg
Amtsgericht Hagen HRB 13257
Steuernummer: 321/5800/1497
USt-IdNr: DE450055826