Linux Systems Programming

Linux Systems Programming

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 66 Lessons (6h 41m) | 883 MB

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.

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

Accessing Files
1 Module and Environment Overview
2 POSIX, glibc, and You
3 Low-level IO with System Calls
4 Demo – File Copy with Low-level IO
5 Random File Access with Low-level IO
6 Advanced Low-level IO with Fast Scatter-gather
7 Advanced Low-level IO with Memory-mapped IO
8 File IO with Streams
9 Demo – File Copy with Stream IO
10 Demo – Comparing Speeds of Low-level and Stream IO
11 Module Summary

Managing Files and Directories
12 Module Overview
13 Files, Directories, and the inode Table
14 Linux File Metadata
15 Demo – Get File Metadata with stat
16 Linux File Types and Permissions
17 Hard Links and Symbolic Links
18 Linux Directories
19 Demo – Traversing a Directory
20 File System Events with inotify
21 Demo – Using the inotify API
22 Module Summary

The Command Line, the Environment, and Time
23 Module Overview
24 Command Line Arguments with argc and argv
25 Using getopt for Command Line Options
26 Demo – Using getopt to Parse Command Line Options
27 Working with the Environment
28 Getting Started with Time
29 Display User Formatted Time with strftime Templates
30 Incorporating Time Zones and Locales
31 Measuring Process Time
32 Module Summary

Processes and Pipes
33 Module Overview
34 What Is a Process
35 Program Exit Statuses
36 Creating Processes with fork()
37 Executing Programs with the Exec Family
38 The Lifecycle of a Process
39 Demo – Creating a Shell with fork(), the Exec Family, and waitpid()
40 What Is a Pipe
41 Demo – Basic Inter-process Communication with Pipes
42 Named Pipes
43 Module Summary

Mastering Signals
44 Module Overview
45 Signal Fundamentals
46 Demo – Common Signal Types
47 Handling Signals with signal()
48 Better Signal Handling with sigaction()
49 Demo – Ignore Signal
50 Demo – Terminate Gracefully on Signal
51 Demo – Dynamic Reconfiguration
52 Demo – Report Status or Statistics
53 Demo – Toggle Debugging
54 Demo – Simple Timeout
55 Demo – Scheduled Tasks
56 Module and Course Summary

Course Overview
57 Course Overview

Controlling Access, Identity, and Permissions
58 Module Overview
59 User and Group Fundamentals
60 Querying and Listing Users and Groups
61 Real and Effective Process Identity
62 File Permission Fundamentals
63 Demo – Creating and Modifying File Permissions
64 File Ownership Nuances and Functions
65 Demo – Assigning and Modifying File Ownership
66 Module Summary

Homepage