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.