Call Email Facebook Instagram Linkedin

Developing Applications For Linux (LFD401) Training

  • 4.9(31,452 Rating)

Course Overview

The Developing Applications for Linux (LFD401) Training is an advanced, hands-on programme designed for software developers, system engineers, and IT professionals who want to master application development on the Linux platform. This course focuses on equipping participants with the skills to design, develop, debug, and optimise Linux-based applications using contemporary programming techniques and tools.

Participants will gain a deep understanding of Linux system architecture, process management, inter-process communication, multithreading, system calls, and file handling, while learning to leverage C, C++, and scripting languages effectively in Linux environments. The training also covers advanced topics, including network programming, performance profiling, memory management, and software debugging.

Through practical exercises, real-world case studies, and development projects, learners will develop the competence to build scalable, secure, and high-performance applications on Linux. The course prepares participants for roles in enterprise development, DevOps, cloud computing, and embedded systems, where Linux remains a foundational platform.

Course Objectives & Learning Outcomes:

  • Understand the Linux operating system architecture and kernel interaction
  • Develop robust applications using C and C++ on Linux
  • Implement process management, inter-process communication (IPC), and multithreading
  • Handle file I/O, signals, and exception handling effectively
  • Apply network programming techniques for TCP/IP and UDP communication
  • Debug, profile, and optimise Linux applications for performance and scalability
  • Write secure, maintainable, and portable code for enterprise or embedded applications
  • Integrate applications with Linux libraries, APIs, and system services

Target Audiance

  • Participants should have a basic understanding of programming, preferably in C or C++, and familiarity with Linux command-line operations. Experience with software development concepts, algorithms, and data structures is recommended to fully benefit from the advanced topics covered.

Schedule Dates

18 May 2026 - 21 May 2026
Developing Applications For Linux (LFD401) Training
24 August 2026 - 27 August 2026
Developing Applications For Linux (LFD401) Training
30 November 2026 - 03 December 2026
Developing Applications For Linux (LFD401) Training
08 March 2027 - 11 March 2027
Developing Applications For Linux (LFD401) Training

Course Content

  • 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

  • Procedures
  • Standards and the LSB

  • 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

  • GCC
  • Other Compilers
  • Major gcc Options
  • Preprocessor
  • Integrated Development Environments (IDE)
  • Labs

  • Static Libraries
  • Shared Libraries
  • Linking To Libraries
  • Dynamic Linking Loader
  • Labs

  • Using make and Makefiles
  • Building large projects
  • More complicated rules
  • Builtin rules
  • Labs

  • Source Control
  • RCS and CVS
  • Subversion
  • Git
  • Labs

  • gdb
  • What are Core Dump Files?
  • Producing Core Dumps
  • Examining Core Dumps
  • Labs

  • Getting the Time
  • Profiling and Performance
  • valgrind
  • Labs

  • System Calls vs. Library Functions
  • How System Calls are Made
  • Return Values and Error Numbers
  • Labs

  • Memory Management
  • Dynamical Allocation
  • Tuning malloc()
  • Locking Pages
  • Labs

  • Files, Directories and Devices
  • The Virtual File System
  • The ext2/ext3 Filesystem
  • Journaling Filesystems
  • The ext4/ Filesystem
  • Labs

  • 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

  • Stat Functions
  • Directory Functions
  • inotify
  • Memory Mapping
  • flock() and fcntl()
  • Making Temporary Files
  • Other System Calls
  • Labs

  • What is a Process?
  • Process Limits
  • Process Groups
  • The proc Filesystem
  • InterProcess Communication Methods
  • Labs

  • 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 InterProcess Communication
  • popen() and pclose()
  • pipe()
  • Named Pipes (FIFOs)
  • splice(), vmsplice() and tee()
  • Labs

  • What is Asynchronous I/O?
  • The POSIX Asynchronous I/O API
  • Linux Implementation
  • Labs

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

  • Reentrancy and Signal Handlers
  • Jumping and NonLocal Returns
  • siginfo and sigqueue()
  • Real Time Signals
  • Labs

  • Multithreading under Linux
  • Basic Program Structure
  • Creating and Destroying Threads
  • Creating and Destroying Threads
  • Signals and Threads
  • Forking vs. Threading
  • Labs

  • Deadlocks and Race Conditions
  • Mutex Operations
  • Semaphores
  • Futexes
  • Conditional Operations
  • Labs

  • Networking Layers
  • What are Sockets?
  • Stream Sockets
  • Datagram Sockets
  • Raw Sockets
  • Byte Orderin
  • Labs

  • Socket Address Structures
  • Converting IP Addresses
  • Host Information
  • Labs

  • Service Port Information
  • Protocol Information
  • Labs

  • Basic Client Sequence
  • socket()
  • connect()
  • close() and shutdown()
  • UNIX Client
  • Internet Client
  • Labs

  • Basic Server Sequence
  • bind()
  • listen()
  • accept()
  • UNIX Server
  • Internet Server
  • Labs

  • write(), read()
  • send(), recv()
  • sendto(), recvfrom()
  • sendmsg(), recvmsg()
  • sendfile()
  • socketpair()
  • Labs

  • Getting and Setting Socket Options
  • fcntl()
  • ioctl()
  • getsockopt() and setsockopt()
  • Labs

  • What are netlink Sockets?
  • Opening a netlink Socket
  • netlink Messages
  • Labs

  • Multiplexed and Asynchronous Socket I/O
  • select()
  • poll()
  • pselect() and ppoll()
  • epoll
  • Signal Driven and Asynchronous I/O
  • Concurrent Servers
  • Labs

  • Methods of IPC
  • POSIX IPC
  • System V IPC**
  • Labs

  • What is Shared Memory?
  • POSIX Shared Memory
  • System V Shared Memory**
  • Labs

  • What is a Semaphore?
  • POSIX Semaphores
  • System V Semaphores**
  • Labs

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

FAQs

This course is ideal for software developers, Linux system engineers, DevOps professionals, and IT specialists who want to advance their Linux development skills. It is particularly suited for professionals working in enterprise software, cloud platforms, embedded systems, or network application development.

The course primarily uses C and C++, with occasional examples in Python or shell scripting where applicable. These languages are essential for leveraging Linux system calls, building efficient applications, and integrating with Linux libraries and APIs.

Absolutely. The training includes detailed modules on debugging, profiling, and performance optimisation using tools such as GDB, Valgrind, strace, and perf. Participants learn to identify bottlenecks, memory leaks, and performance issues, ensuring applications run efficiently in production environments.

Yes. Learners will gain practical experience in network programming (TCP/IP and UDP), sockets, IPC mechanisms such as pipes, message queues, shared memory, and semaphores. These skills are critical for developing distributed and multi-process applications.

The course integrates practical exercises, real-world case studies, and project-based learning to simulate enterprise-level development scenarios. Participants gain expertise in system-level programming, performance tuning, security, and scalability, ensuring readiness to tackle complex Linux development challenges in professional settings.

No related courses found.