System Programming in Linux: A Hands-On IntroductionLearn to write real Linux software—not just run it. Most programmers never learn how Linux really works. Why? Because system programming is rarely taught, and the tools can be intimidating without the right guidance. As a result, many developers stick to high-level languages and frameworks—writing code that runs on Linux without understanding how it interacts with Linux. In today’s world, that’s not enough to stand out. Especially as more companies turn to AI to write their software, the question becomes: How do you stay relevant in an AI-driven world? You learn how things really work. If you’ve ever wondered how processes are created, how memory and files are managed, or how programs communicate in a Unix environment, System Programming in Linux will make it all make sense. This is a hands-on guide to writing software that interfaces directly with the Linux operating system. You’ll go beyond shell commands and abstractions to understand what the kernel is doing—and how to leverage it through your own code. Rather than telling you how to solve each problem, Professor Stewart N. Weiss guides you through the process of discovering the solution yourself. Start with the core concepts of Unix and Linux, then work your way up to advanced topics like process control, signals, interprocess communication, threading, and non-blocking I/O. Each chapter includes conceptual diagrams, annotated source code, and practical projects to help you immediately apply what you’ve learned. You’ll explore topics such as:
At Hunter College, Professor Weiss built the course this book is based on, and he has helped thousands of students go from confusion to confidence in his over 40 years of teaching programming. His clear, conversational style; technical depth; and focus on real-world application make this one of the most approachable and powerful system programming books available. As Linux continues to dominate development, server, and embedded environments, understanding the system behind your software isn’t just helpful; it’s essential. Whether you’re a student, developer, or sysadmin, this book gives you the tools to work directly with Linux and the insight to understand what’s really happening under the hood. |
Contents
Core Concepts | 1 |
Fundamentals of System Programming | 49 |
Time Dates and Locales | 93 |
Basic Concepts of File IO | 149 |
File IO and Login Accounting | 187 |
Overview of Filesystems and Files | 247 |
The Directory Hierarchy | 311 |
Introduction to Signals | 383 |
ClientServer Applications and Daemons | 679 |
Introduction to Threads | 709 |
Thread Synchronization | 739 |
Alternative Methods of IO | 791 |
Terminals and Terminal IO | 833 |
Interactive Programming and the ncurses Library | 877 |
Creating Libraries | 943 |
Unicode and UTF8 | 955 |
Timers and Sleep Functions | 435 |
Process Fundamentals | 491 |
Process Creation and Termination | 539 |
Introduction to Interprocess Communication | 597 |
Pipes and FIFOs | 645 |
Date and Time Format Specifiers | 961 |
| 965 | |
| 969 | |
Other editions - View all
Common terms and phrases
argument array block buffer Chapter char argv characters child process client command line contains create cursor data structures default define device disk display enter entry errno error example executable exit fatal_error(errno FIFO file descriptor file offset filename filesystem flags format getpid glibc handling header file implementation include common_hdrs.h inode inode number input int main(int argc integer interface ioctl kernel lastlog library functions Linux Listing lock login loop macro main program message queue mode modify mutex ncurses NULL open file option output parameter parent pathname pipe pointer POSIX printf return value screen semaphore server shared memory sigaction SIGALRM SIGCHLD SIGINT signal handler SIGUSR1 snip specified standard stat string symbolic link synchronization system call terminal thread time_t timer umask Unix systems update user ID utmpx void wait waitpid window write end wtmp
