C++ programming for Linux systems create robust enterprise software for Linux and Unix-based operating systems

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 creat...

Descripción completa

Detalles Bibliográficos
Otros Autores: Andreev, Desislav, author (author), Lukanov, Stanimir, author (writer of foreword), Lazarova, Milena, writer of foreword
Formato: Libro electrónico
Idioma:Inglés
Publicado: Birmingham, UK : Packt Publishing Ltd 2023.
Edición:[First edition]
Materias:
Ver en Biblioteca Universitat Ramon Llull:https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009768136906719
Tabla de Contenidos:
  • 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