Linux Systems Programming
The Linux family of operating systems is one of the most popular platforms to deploy modern applications on. This course will teach you how to interact with Linux operating systems in the C programming language.
What you'll learn
Whether you are writing an ultra-low latency trading algorithm for a high frequency trading firm, device drivers for an embedded system, or anything in between, modern software applications will often be developed on the Linux operating system. In this course, Linux Systems Programming, you'll learn how to interact with various aspects of the Linux operating system when developing software in the C programming language. First, you’ll explore how to create, read, and write files and directories through a variety of different means. Next, you’ll discover how to interact with the inputs and outputs of Linux software, such as command line arguments, environment variables, pipes, and signals. Finally, you’ll learn how to control access to files and directories through permissions and user accounts. When you’re finished with this course, you’ll have the skills and knowledge of Linux systems programming with the C programming language to confidently develop C-based applications on Linux operating systems in addition to a more wholistic understanding of how the Linux operating system functions.
Table of contents
- Module and Environment Overview 6m
- POSIX, glibc, and You 5m
- Low-level I/O with System Calls 8m
- Demo: File Copy with Low-level I/O 6m
- Random File Access with Low-level I/O 9m
- Advanced Low-level I/O with Fast Scatter-gather 6m
- Advanced Low-level I/O with Memory-mapped I/O 9m
- File I/O with Streams 5m
- Demo: File Copy with Stream I/O 5m
- Demo: Comparing Speeds of Low-level and Stream I/O 5m
- Module Summary 2m
- Module Overview 2m
- Files, Directories, and the inode Table 8m
- Linux File Metadata 5m
- Demo: Get File Metadata with stat 9m
- Linux File Types and Permissions 11m
- Hard Links and Symbolic Links 11m
- Linux Directories 9m
- Demo: Traversing a Directory 8m
- File System Events with inotify 7m
- Demo: Using the inotify API 8m
- Module Summary 2m
- Module Overview 2m
- Command Line Arguments with argc and argv 4m
- Using getopt for Command Line Options 9m
- Demo: Using getopt to Parse Command Line Options 9m
- Working with the Environment 12m
- Getting Started with Time 14m
- Display User Formatted Time with strftime Templates 11m
- Incorporating Time Zones and Locales 8m
- Measuring Process Time 8m
- Module Summary 1m
- Module Overview 2m
- What Is a Process? 11m
- Program Exit Statuses 4m
- Creating Processes with fork() 9m
- Executing Programs with the Exec Family 6m
- The Lifecycle of a Process 6m
- Demo: Creating a Shell with fork(), the Exec Family, and waitpid() 14m
- What Is a Pipe? 11m
- Demo: Basic Inter-process Communication with Pipes 5m
- Named Pipes 8m
- Module Summary 2m
- Module Overview 1m
- User and Group Fundamentals 8m
- Querying and Listing Users and Groups 8m
- Real and Effective Process Identity 11m
- File Permission Fundamentals 7m
- Demo: Creating and Modifying File Permissions 4m
- File Ownership Nuances and Functions 2m
- Demo: Assigning and Modifying File Ownership 7m
- Module Summary 1m
- Module Overview 1m
- Signal Fundamentals 7m
- Demo: Common Signal Types 6m
- Handling Signals with signal() 5m
- Better Signal Handling with sigaction() 11m
- Demo: Ignore Signal 3m
- Demo: Terminate Gracefully on Signal 3m
- Demo: Dynamic Reconfiguration 3m
- Demo: Report Status or Statistics 2m
- Demo: Toggle Debugging 2m
- Demo: Simple Timeout 3m
- Demo: Scheduled Tasks 2m
- Module and Course Summary 2m