Description |
1 online resource (288 pages) : illustrations |
Contents |
Cover -- Title Page -- Copyright and Credit -- Dedicated -- Foreword -- Contributors -- Table of Contents -- Preface -- Part 1: Securing the Fundamentals -- Chapter 1: Getting Started with Linux Systems and the POSIX Standard -- Technical requirements -- Getting familiar with the concept of OSs -- Types of OSs -- Linux in short -- Getting to know the Linux kernel -- Introducing the system call interface and system programming -- Navigating through files, processes, and threads -- File -- Process and thread -- Types of processes based on their running mode |
|
Running services with init and systemd -- Portable Operating System Interface (POSIX) -- Summary -- Chapter 2: Learning More about Process Management -- Technical requirements -- Disassembling process creation -- Memory segments -- Continuing with process states and some scheduling mechanisms -- Scheduling mechanisms -- Scheduling at a high level -- Scheduling at a low level -- Learning more about process creation -- Introducing fork() -- exec and clone() -- Terminating a process -- Blocking a calling process -- Introducing the system calls for thread manipulation in C++ |
|
Joining and detaching threads -- Thread termination -- Summary -- Chapter 3: Navigating through the Filesystems -- Technical requirements -- Going through Linux's filesystem fundamentals -- Linux's FS -- Directory structure and partitioning -- Linux FS objects -- Executing FS operations with C++ -- IPC through anonymous pipes and named pipes -- Anonymous or unnamed pipes -- Named pipes -- Briefly observing signal handling -- Summary -- Chapter 4: Diving Deep into the C++ Object -- Technical requirements -- Understanding the C++ object model -- Declaration versus definition |
|
Scope, storage duration, and lifetimes -- The object -- The reference -- Understanding why initialization matters -- Functors and lambdas -- Exploring functional objects -- Lambda expressions -- Summary -- Chapter 5: Handling Errors with C++ -- Technical requirements -- Handling errors from POSIX APIs with C++ -- Using std::error_code and std::error_condition -- From error codes to exceptions -- std::system_error -- Throw by value, catch by reference -- try/catch ... finally -- Summary -- Part 2: Advanced Techniques for System Programming -- Chapter 6: Concurrent System Programming with C++ |
|
Technical requirements -- What is concurrency? -- Threads versus processes -- Concurrency with C++ -- Demystifying race conditions and data races -- How do we avoid them? -- Practical multithreading -- Hello C++ jthread -- Canceling threads -- is this really possible? -- std::stop_source -- Sharing data during parallel execution -- Barriers and latches -- Summary -- Chapter 7: Proceeding with Inter-Process Communication -- Technical requirements -- Introducing MQs and the pub/sub mechanism -- The pub/sub mechanism -- Guaranteeing atomic operations through semaphores and mutual exclusions |
Summary |
Boost your C++ skills by working through realistic examples and exploring system specifications Key Features Master essential skills to build robust Linux systems Explore hands-on examples to demystify crucial development concepts, upskilling your system programming abilities Master the art of creating software for Linux systems and supercharge your C++ skills Purchase of the print or Kindle book includes a free PDF eBook Book Description Around 35 million Linux and almost 2 billion Android users rely on C++ for everything from the simplest embedded and IoT devices to cloud services, supercomputing, and space exploration. To help you produce high-quality software, two industry experts have transformed their knowledge and experience into practical examples in system programming with C++ Programming for Linux Systems. In this book, you'll explore the latest C++20 features, while working on multiple specific use cases. You'll get familiar with the coroutines and modern approaches in concurrent and multithreaded programming. You'll also learn to reshape your thinking when analyzing system behavior in Linux (POSIX) environments. Additionally, you'll discover advanced discussions and novel solutions for complex challenges, while approaching trivial system operations with a new outlook and learning to choose the best design for your particular case. You can use this workbook as an introduction to system programming and software design in Linux or any Unix-based environment. You'll also find it useful as a guideline or a supplement to any C++ book. By the end of this book, you'll have gained advanced knowledge and skills for working with Linux or any Unix-based environment. What you will learn Use C++20 features to craft elegant, efficient, and modern code for Linux systems Acquire essential system programming skills with hands-on examples Develop a deep understanding of Linux programming, from embedded systems to cloud services Tailor your applications to exploit the strengths and mitigate the weaknesses of different architectures Merge advanced C++, system programming, Linux insights, and architecture to create exceptional software Boost your code quality by using system programming techniques to refine and optimize your codebase Who this book is for This book is for every software developer looking to improve and update their C++ development skills. Both students and professionals will find this book useful as the examples are curated to match any area of expertise and are easily adaptable. At the same time, they don't lose focus of the system specifics. A basic understanding of operating systems' interfaces is a must along with experience in software development |
Notes |
Includes index |
SUBJECT |
Linux. http://id.loc.gov/authorities/names/n94087892
|
|
UNIX (Computer file) http://id.loc.gov/authorities/names/n91019960
|
|
Linux fast |
|
UNIX (Computer file) fast |
Subject |
C++ (Computer program language)
|
|
Computer programming.
|
|
Operating systems (Computers)
|
|
computer programming.
|
|
operating systems.
|
|
C++ (Computer program language)
|
|
Computer programming
|
|
Operating systems (Computers)
|
Form |
Electronic book
|
Author |
Lukanov, Stanimir, author
|
|
Lazarova, Milena, writer of foreword
|
|