Book description
Find solutions to all your problems related to Linux system programming using practical recipes for developing your own system programs
Key Features
- Develop a deeper understanding of how Linux system programming works
- Gain hands-on experience of working with different Linux projects with the help of practical examples
- Learn how to develop your own programs for Linux
Book Description
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.
What you will learn
- Discover how to write programs for the Linux system using a wide variety of system calls
- Delve into the working of POSIX functions
- Understand and use key concepts such as signals, pipes, IPC, and process management
- Find out how to integrate programs with a Linux system
- Explore advanced topics such as filesystem operations, creating shared libraries, and debugging your programs
- Gain an overall understanding of how to debug your programs using Valgrind
Who this book is for
This book is for anyone who wants to develop system programs for Linux and gain a deeper understanding of the Linux system. The book is beneficial for anyone who is facing issues related to a particular part of Linux system programming and is looking for specific recipes or solutions.
Table of contents
- Linux System Programming Techniques
- Contributors
- About the author
- About the reviewer
- Preface
- Chapter 1: Getting the Necessary Tools and Writing Our First Linux Programs
-
Chapter 2: Making Your Programs Easy to Script
- Technical requirements
- Return values and how to read them
- Exiting a program with a relevant return value
- Redirecting stdin, stdout, and stderr
- Connecting programs using pipes
- Writing to stdout and stderr
- Reading from stdin
- Writing a pipe-friendly program
- Redirecting the result to a file
- Reading environment variables
-
Chapter 3: Diving Deep into C in Linux
- Technical requirements
- Linking against libraries using GCC
- Changing C standards
- Using system calls – and when not to use them
- Getting information about Linux- and Unix-specific header files
- Defining feature test macros
- Looking at the four stages of compilation
- Compiling with Make
- Writing a generic Makefile with GCC options
- Writing a simple Makefile
- Writing a more advanced Makefile
- Chapter 4: Handling Errors in Your Programs
-
Chapter 5: Working with File I/O and Filesystem Operations
- Technical requirements
- Reading inode information and learning the filesystem
- Creating soft links and hard links
- Creating files and updating the timestamp
- Deleting files
- Getting access rights and ownership
- Setting access rights and ownership
- Writing to files with file descriptors
- Reading from files with file descriptors
- Writing to files with streams
- Reading from files with streams
- Reading and writing binary data with streams
- Moving around inside a file with lseek()
- Moving around inside a file with fseek()
-
Chapter 6: Spawning Processes and Using Job Control
- Technical requirements
- Exploring how processes are created
- Using job control in Bash
- Controlling and terminating processes using signals
- Replacing the program in a process with execl()
- Forking a process
- Executing a new program in a forked process
- Starting a new process with system()
- Creating a zombie process
- Learning about what orphans are
- Creating a daemon
- Implementing a signal handler
- Chapter 7: Using systemd to Handle Your Daemons
- Chapter 8: Creating Shared Libraries
- Chapter 9: Terminal I/O and Changing Terminal Behavior
-
Chapter 10: Using Different Kinds of IPC
- Technical requirements
- Using signals for IPC – building a client for the daemon
- Communicating with a pipe
- FIFO – using it in the shell
- FIFO – building the sender
- FIFO – building the receiver
- Message queues – creating the sender
- Message queues – creating the receiver
- Communicating between child and parent with shared memory
- Using shared memory between unrelated processes
- Unix socket – creating the server
- Unix socket – creating the client
- Chapter 11: Using Threads in Your Programs
-
Chapter 12: Debugging Your Programs
- Technical requirements
- Starting GDB
- Stepping inside a function with GDB
- Investigating memory with GDB
- Modifying variables during runtime
- Using GDB on a program that forks
- Debugging programs with multiple threads
- Finding a simple memory leak with Valgrind
- Finding buffer overflows with Valgrind
- Why subscribe?
- Other Books You May Enjoy
Product information
- Title: Linux System Programming Techniques
- Author(s):
- Release date: May 2021
- Publisher(s): Packt Publishing
- ISBN: 9781789951288
You might also like
book
Linux System Programming, 2nd Edition
Write software that draws directly on services offered by the Linux kernel and core system libraries. …
book
Hands-On System Programming with Linux
Get up and running with system programming concepts in Linux Key Features Acquire insight on Linux …
book
Mastering Embedded Linux Programming - Third Edition
Harness the power of Linux to create versatile and robust embedded solutions Key Features Learn how …
book
Linux Kernel Development, Third Edition
Linux Kernel Development details the design and implementation of the Linux kernel, presenting the content in …