Introduction to System Programming in Linux

by Stewart N. Weiss
Spring 2025, 700 pp.
Use coupon code PREORDER to get 25% off!

This book deftly reveals the Unix operating system’s design and structure, teaching you how to write programs on and for the Linux OS and how to work efficiently within a Unix/Linux environment. Targeted at beginners with some basic C or C++ programming knowledge, you’ll find expert guidance on using the bash shell and other helpful Unix tools, and gain a practical understanding of the Linux kernel's application programming interface.

The author’s friendly, conversational style reflects his more than 40 years of experience teaching what he refers to as “the marvel of Unix.” Numerous diagrams included in each chapter illustrate and simplify key concepts, along with hands-on projects that build on one another as you work through the book.

*Prior programming experience, in C, C++, or a C-derivative is expected (or the reader should be willing to learn this as they read). No knowledge of Unix is necessary, but you will need access to a Linux system.


Author Bio 

Stewart N. Weiss is a tenured, associate professor in the Computer Science Department at Hunter College. Weiss earned his PhD in computer science from the Courant Institute of Mathematical Science of New York University in 1987. He has been teaching a broad range of courses since 1982 and has developed several new courses for the department, including  Unix system programming, parallel computing, and open source software development.

Table of contents 

Chapter 1: Basics Concepts of Unix and System Programming
Chapter 2: Working in the Command Interface
Chapter 3: Fundamentals of System Programming
Chapter 4: Getting Started: Time and Locales
Chapter 5: Basic Concepts of File I/O
Chapter 6: Some Advanced Concepts of File I/O

Chapter 7: Overview of Filesystems and Files
Chapter 8: The Directory Hierarchy
Chapter 9: Introduction to Signals

Chapter 10: Timers and Sleep Functions
Chapter 11: Process Fundamentals

Chapter 12: Process Creation and Termination
Chapter 13: Threads
Chapter 14: Terminals and Terminal I/O
Chapter 15: Interactive Programming
Chapter 16: The NCurses Library
Chapter 17: Thread Synchronization
Chapter 18: Basics of Interprocess Communication
Chapter 19: Advanced Topics in Interprocess Communication
Chapter 20: Introduction to Sockets

Appendix A: Creating Libraries
Appendix B: System Limits
Appendix C: Date and Time Format Specifiers

Appendix D: Filters
Appendix E: Unicode and UTF-8
Appendix F: The Make Utility
Appendix G: Solutions to Selected Exercises


The chapters in red are included in this Early Access PDF.