Book Image

C++ Programming for Linux Systems

By : Desislav Andreev, Stanimir Lukanov
Book Image

C++ Programming for Linux Systems

By: Desislav Andreev, Stanimir Lukanov

Overview of this book

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.
Table of Contents (15 chapters)
Free Chapter
1
Part 1:Securing the Fundamentals
7
Part 2:Advanced Techniques for System Programming

Preface

Greetings, dear reader! You are among friends. Welcome to this journey of advanced skills, unexpected surprises, cunning knowledge, and novel programming tools. Suppose you are an experienced software engineer who knows how to write quality code and is aware of some build and operating systems. You have also met several computer architectures and fixed one or two bugs. And how about the following: You are a student who just learns how to do the job of a software engineer. You want to be a good professional someday. And you want to be the expert, whom others call, whenever the software behaves unpredictably. Or you just have picked up this book out of initial interest, still not knowing what to expect. Then perfect!

We challenge you to remember any situations in your practice, where, to this day, you have no explanation of what happened. No, we do not mean the supernatural – although this topic is rather arcane. We speak about the system and how we conduct its behavior as professional engineers. Our code is just an instrument that tells the machine what to do. So, let’s say you have remembered that one bug that has been bugging you for some time – how do you proceed? What if it stands between you and your next promotion? How about when it disappoints a client that is important to you? Or you just want to impress your teacher. We get you! We are there, too.

Do not be fooled, though. We give you the opportunity to enrich the way you engineer through some fundamental pointers, but we do not have all the answers. We strongly believe that changing the way you see how code works will make you a more robust expert, no matter your professional field. And you should care because the world of technology is rapidly advancing. It is impossible to keep up with every innovation, algorithm, language, operating system, and architecture. But you could start asking yourself the right questions at the right moment. You have the possibility to know how to optimize further, design better, validate your environment, and encourage yourself to understand your own work thoroughly.

We challenge you again. This time to be more self-aware and efficient through our experience and expertise. There are some sophisticated real-world challenges that we so impatiently want to share with you. Please remember, it will take you some time. As friends, we hope you enjoy this book and share the exciting parts with others. Chop-chop... Let’s go!