Overview
Live Online (Virtual) or Live (Classroom)
4 days of Instructor-led class time
Hands-on Labs & Assignments
Resources & Course Manual
Certificate of Completion
Digital Badge
Learn how to develop applications for the Linux environment. In this instructor-led course, you’ll get hands-on experience with the necessary tools and methods for Linux application development and learn about the features and techniques that are unique to Linux.
What you will learn?
In this course you will learn about the tools and methods for developing C programs and doing systems programming under Linux, debugging techniques, process management, Linux specific paid and system calls, and more.
What you will gain?
This course will prepare you to develop applications for a Linux environment.
Requirements
This course is for experienced developers. Students should be proficient in C programming, and be familiar with basic Linux utilities and text editors.
Audience
This course is for experienced developers. Students should be proficient in C programming, and be familiar with basic Linux utilities and text editors.
Experience Level: Intermediate
Course Outline
Introduction
- Objectives
- Who You Are
- The Linux Foundation
- Linux Foundation Training
- Certification Programs and Digital Badging
- Linux Distributions
- Platforms
- Preparing Your System
- Using and Downloading a Virtual Machine
- Things change in Linux
Preliminaries
- Procedures
- Standards and the LSB
How to Work in OSS Projects **
- Overview on How to Contribute Properly
- Stay Close to Mainline for Security and Quality
- Study and Understand the Project DNA
- Figure Out What Itch You Want to Scratch
- Identify Maintainers and Their Work Flows and Methods
- Get Early Input and Work in the Open
- Contribute Incremental Bits, Not Large Code Dumps
- Leave Your Ego at the Door: Don’t Be ThinSkinned
- Be Patient, Develop Long Term Relationships, Be Helpful
Compilers
- GCC
- Other Compilers
- Major gcc Options
- Preprocessor
- Integrated Development Environments (IDE)
- Labs
Libraries
- Static Libraries
- Shared Libraries
- Linking To Libraries
- Dynamic Linking Loader
- Labs
Make
- Using make and Makefiles
- Building large projects
- More complicated rules
- Builtin rules
- Labs
Source Control
- Source Control
- RCS and CVS
- Subversion
- git
- Labs
Debugging and Core Dumps
- gdb
- What are Core Dump Files?
- Producing Core Dumps
- Examining Core Dumps
- Labs
Debugging Tools
- Getting the Time
- Profiling and Performance
- valgrind
- Labs
System Calls
- System Calls vs. Library Functions
- How System Calls are Made
- Return Values and Error Numbers
- Labs
Memory Management and Allocation
- Memory Management
- Dynamical Allocation
- Tuning malloc()
- Locking Pages
- Labs
Files and Filesystems in Linux **
- Files, Directories and Devices
- The Virtual File System
- The ext2/ext3 Filesystem
- Journaling Filesystems
- The ext4/ Filesystem
- Labs
File I/O
- UNIX File I/O
- Opening and Closing
- Reading, Writing and Seeking
- Positional and Vector I/O
- Standard I/O Library
- Large File Support (LFS)
- Labs
Advanced File Operations
- Stat Functions
- Directory Functions
- inotify
- Memory Mapping
- flock() and fcntl()
- Making Temporary Files
- Other System Calls
- Labs
Processes I
- What is a Process?
- Process Limits
- Process Groups
- The proc Filesystem
- InterProcess Communication Methods
- Labs
Processes II
- Using system() to Create a Process
- Using fork() to Create a Process
- Using exec() to Create a Process
- Using clone()
- Exiting
- Constructors and Destructors
- Waiting
- Daemon Processes
- Labs
Pipes and Fifos
- Pipes and InterProcess Communication
- popen() and pclose()
- pipe()
- Named Pipes (FIFOs)
- splice(), vmsplice() and tee()
- Labs
Asynchronous I/O**
- What is Asynchronous I/O?
- The POSIX Asynchronous I/O API
- Linux Implementation
- Labs
Signals I
- What are Signals?
- Signals Available
- Dispatching Signals
- Alarms, Pausing and Sleeping
- Setting up a Signal Handler
- Signal Sets
- sigaction()
- Labs
Signals II
- Reentrancy and Signal Handlers
- Jumping and NonLocal Returns
- siginfo and sigqueue()
- Real Time Signals
- Labs