Linux Foundation

Developing Applications for Linux LFD401

  • 4 days
  • 0 upcoming dates
  • $3,250 per seat

About this class

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.

This course is taught in partnership with the Linux Foundation.

What you'll be able to do

  • Upon successful completion of this course, students will gain the following skills and knowledge as you deploy, test, secure, manage, optimize, and troubleshoot a cloud solution.
  • Preliminaries
  • How to Work in OSS Projects
  • Compilers
  • Libraries
  • Make
  • Source Control
  • Debugging and Core Dumps
  • Debugging Tools
  • System Calls
  • Files and Filesystems in Linux
  • File I/O
  • Advanced File Operations
  • Processes - I
  • Processes - II
  • Pipes and Fifos
  • Asynchronous I/O
  • Signals - I
  • Signals - II
  • POSIX Threads - I
  • POSIX Threads - II
  • Networking and Sockets
  • Sockets - Addresses and Hosts
  • Sockets - Ports and Protocols
  • Sockets - Clients
  • Sockets - Servers
  • Sockets - Input/Output Operations
  • Sockets - Options
  • Netlink Sockets
  • Sockets - Multiplexing and Concurrent Servers
  • Inter Process Communication
  • Shared Memory
  • Semaphores
  • Message Queues

Before you attend

To make the most of this course, students should: Be proficient in the C programming language, basic Linux (UNIX) utilities such as ls, grep and tar, and be comfortable with any of the available text editors (e.g. emacs, vi, etc.) Experience with any major Linux distribution is helpful but not strictly required.

Course outline

  1. Module 1Introduction

    • 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 and Open Source Projects
  2. Module 2Preliminaries

    • Procedures
    • Standards and the LSB
  3. Module 3How to Work in OSS Projects **

    • Overview on How to Contribute Properly
    • Know Where the Code is Coming From: DCO and CLA
    • 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 Thin-Skinned
    • Be Patient, Develop Long Term Relationships, Be Helpful
  4. Module 4Compilers

    • GCC
    • Other Compilers
    • Major gcc Options
    • Preprocessor
    • Integrated Development Environments (IDE)
    • Labs
  5. Module 5Libraries

    • Static Libraries
    • Shared Libraries
    • Linking To Libraries
    • Dynamic Linking Loader
    • Labs
  6. Module 6Make

    • Using make and Makefiles
    • Building large projects
    • More complicated rules
    • Built-in rules
    • Labs
  7. Module 7Source Control

    • Source Control
    • RCS and CVS
    • Subversion
    • git
    • Labs
  8. Module 8Debugging and Core Dumps

    • gdb
    • What are Core Dump Files?
    • Producing Core Dumps
    • Examining Core Dumps
    • Labs
  9. Module 9Debugging Tools

    • Getting the Time
    • Profiling and Performance
    • valgrind
    • Address Sanitizer
    • Labs
  10. Module 10System Calls

    • System Calls vs. Library Functions
    • How System Calls are Made
    • Return Values and Error Numbers
    • Labs
  11. Module 11Memory Management and Allocation

    • Memory Management
    • Dynamical Allocation
    • Tuning malloc()
    • Locking Pages
    • Labs
  12. Module 12Files and Filesystems in Linux **

    • Files, Directories and Devices
    • The Virtual File System
    • The ext2/ext3 Filesystem
    • Journaling Filesystems
    • The ext4/ Filesystem
    • Labs
  13. Module 13File 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
  14. Module 14Advanced File Operations

    • Stat Functions
    • Directory Functions
    • inotify
    • Memory Mapping
    • flock() and fcntl()
    • Making Temporary Files
    • Other System Calls
    • Labs
  15. Module 15Processes - I

    • What is a Process?
    • Process Limits
    • Process Groups
    • The proc Filesystem
    • Inter-Process Communication Methods
    • Labs
  16. Module 16Processes - 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
  17. Module 17Pipes and Fifos

    • Pipes and Inter-Process Communication
    • popen() and pclose()
    • pipe()
    • Named Pipes (FIFOs)
    • splice(), vmsplice() and tee()
    • Labs
  18. Module 18Asynchronous I/O**

    • What is Asynchronous I/O?
    • The POSIX Asynchronous I/O API
    • Linux Implementation
    • Labs
  19. Module 19Signals - I

    • What are Signals?
    • Signals Available
    • Dispatching Signals
    • Alarms, Pausing and Sleeping
    • Setting up a Signal Handler
    • Signal Sets
    • sigaction()
    • Labs
  20. Module 20Signals - II

    • Reentrancy and Signal Handlers
    • Jumping and Non-Local Returns
    • siginfo and sigqueue()
    • Real Time Signals
    • Labs
  21. Module 21POSIX Threads - I

    • Multi-threading under Linux
    • Basic Program Structure
    • Creating and Destroying Threads
    • Signals and Threads
    • Forking vs. Threading
    • Labs
  22. Module 22POSIX Threads - II

    • Deadlocks and Race Conditions
    • Mutex Operations
    • Semaphores
    • Futexes
    • Conditional Operations
    • Labs
  23. Module 23Networking and Sockets

    • Networking Layers
    • What are Sockets?
    • Stream Sockets
    • Datagram Sockets
    • Raw Sockets
    • Byte Ordering
    • Labs
  24. Module 24Sockets - Addresses and Hosts

    • Socket Address Structures
    • Converting IP Addresses
    • Host Information
    • Labs
  25. Module 25Sockets - Ports and Protocols

    • Service Port Information
    • Protocol Information
    • Labs
  26. Module 26Sockets - Clients

    • Basic Client Sequence
    • socket()
    • connect()
    • close() and shutdown()
    • UNIX Client
    • Internet Client
    • Labs
  27. Module 27Sockets - Servers

    • Basic Server Sequence
    • bind()
    • listen()
    • accept()
    • UNIX Server
    • Internet Server
    • Labs
  28. Module 28Sockets - Input/Output Operations

    • write(), read()
    • send(), recv()
    • sendto(), recvfrom()
    • sendmsg(), recvmsg()
    • sendfile()
    • socketpair()
    • Labs
  29. Module 29Sockets - Options

    • Getting and Setting Socket Options
    • fcntl()
    • ioctl()
    • getsockopt() and setsockopt()
    • Labs
  30. Module 30Netlink Sockets**

    • What are netlink Sockets?
    • Opening a netlink Socket
    • netlink Messages
    • Labs
  31. Module 31Sockets - Multiplexing and Concurrent Servers

    • Multiplexed and Asynchronous Socket I/O
    • select()
    • poll()
    • pselect() and ppoll()
    • epoll
    • Signal Driven and Asynchronous I/O
    • Concurrent Servers
    • Labs
  32. Module 32Inter Process Communication

    • Methods of IPC
    • POSIX IPC
    • System V IPC**
    • Labs
  33. Module 33Shared Memory

    • What is Shared Memory?
    • POSIX Shared Memory
    • System V Shared Memory**
    • Lab
  34. Module 34Semaphores

    • What is a Semaphore?
    • POSIX Semaphores
    • System V Semaphores**
    • Labs
  35. Module 35Message Queues

    • What are Message Queues?
    • POSIX Message Queues
    • System V Message Queues**

Download the full outline (PDF)

Run this for a team

Private cohorts run on your dates, at your site or online, with the labs pointed at your environment. Above about four people it usually costs less than buying seats.

Or call 916-920-1700, weekdays 8 to 5 Pacific.

More digital transformation classes

See all