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...
Otros Autores: | , , |
---|---|
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