Developing Applications For Linux (LFD401) Training Course

Overview

Live Online Virtual or Live Classroom Live Online (Virtual) or Live (Classroom)

4 days of Instructor-led class time 4 days of Instructor-led class time

Hands-on Labs & Assignments Hands-on Labs & Assignments

Resources & Course Manual Resources & Course Manual

Certificate of Completion Certificate of Completion

Digital Badge 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

Leave a Reply

Your email address will not be published. Required fields are marked *