Book Image

Linux System Programming Techniques

By : Jack-Benny Persson
5 (1)
Book Image

Linux System Programming Techniques

5 (1)
By: Jack-Benny Persson

Overview of this book

Linux is the world's most popular open source operating system (OS). Linux System Programming Techniques will enable you to extend the Linux OS with your own system programs and communicate with other programs on the system. The book begins by exploring the Linux filesystem, its basic commands, built-in manual pages, the GNU compiler collection (GCC), and Linux system calls. You'll then discover how to handle errors in your programs and will learn to catch errors and print relevant information about them. The book takes you through multiple recipes on how to read and write files on the system, using both streams and file descriptors. As you advance, you'll delve into forking, creating zombie processes, and daemons, along with recipes on how to handle daemons using systemd. After this, you'll find out how to create shared libraries and start exploring different types of interprocess communication (IPC). In the later chapters, recipes on how to write programs using POSIX threads and how to debug your programs using the GNU debugger (GDB) and Valgrind will also be covered. By the end of this Linux book, you will be able to develop your own system programs for Linux, including daemons, tools, clients, and filters.
Table of Contents (14 chapters)

What this book covers

Chapter 1, Getting the Necessary Tools and Writing Our First Linux Programs, shows you how to install the tools we need throughout this book. We also write our first program in this chapter.

Chapter 2, Making Your Programs Easy to Script, covers how—and why—we should make our programs easy to script and easy to be used by other programs on the system.

Chapter 3, Diving Deep into C in Linux, takes us on a journey into the inner workings of C programming in Linux. We learn how to use system calls, how the compiler works, how to use the Make tool, how to specify different C standards, and so on.

Chapter 4, Handling Errors in Your Programs, teaches us how to handle errors gracefully.

Chapter 5, Working with File I/O and Filesystem Operations, covers how to read and write to files, using both file descriptors and streams. This chapter also covers how to create and delete files and read file permissions using system calls.

Chapter 6, Spawning Processes and Using Job Control, covers how forking works, how to create a daemon, what parent processes are, and how to send jobs to the background and foreground.

Chapter 7, Using systemd to Handle Your Daemons, shows us how to put our daemon from the previous chapter under the control of systemd. This chapter also teaches us how to write logs to systemd's journal and how to read those logs.

Chapter 8, Creating Shared Libraries, teaches us what shared libraries are, why they're important, and how to make our own shared libraries.

Chapter 9, Terminal I/O and Changing Terminal Behavior, covers how to modify the terminal in different ways—for example, how to disable echoing for a password prompt.

Chapter 10, Using Different Kinds of IPC, is all about IPC—that is, how to make processes communicate with each other on the system. This chapter covers FIFO, Unix sockets, message queues, pipes, and shared memory.

Chapter 11, Using Threads in Your Programs, explains what threads are, how to write threaded programs, how to avoid race conditions, and how to optimize threaded programs.

Chapter 12, Debugging Your Programs, covers debugging using GDB and Valgrind.