Understand how to develop applications for the Linux environment. In this instructor-led training, you’ll get hands-on experience with the necessary tools & methods for Linux application development & learn about the features & techniques that are unique to Linux.
This training is for experienced developers. Professionals should be proficient in C programming, & be familiar with basic Linux utilities & text editors.
This training is for experienced developers. Professionals should be proficient in C programming, & be familiar with basic Linux utilities & text editors.
In this training, you will learn about the tools & methods for developing C programs & doing systems programming under Linux, debugging techniques, process management, Linux-specific paid & system calls, & more.
- Objectives
- Who You Are
- The Linux Foundation
- Copyright & No Confidential Information
- Linux Foundation Training
- Certification Programs & Digital Badging
- Linux Distributions
- Platforms
- Preparing Your System
- Using & Downloading a Virtual Machine
- Things Change in Linux & Open Source Projects
- Procedures
- Standards & the LSB
- Overview of How to Contribute Properly
- Know Where the Code is Coming From DCO & CLA
- Stay Close to Mainline for Security & Quality
- Study & Understand the Project DNA
- Figure Out What Itch You Want to Scratch
- Identify Maintainers & Their Work Flows & Methods
- Get Early Input & 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, and 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 & Makefiles
- Building large projects
- More complicated rules
- Built-in rules
- Labs
- Source Control
- RCS & CVS
- Subversion
- git
- Labs
- gdb
- What is Core Dump Files?
- Producing Core Dumps
- Examining Core Dumps
- Labs
- Getting the Time
- Profiling & Performance
- valgrind
- Address Sanitizer
- Labs
- System Calls vs. Library Functions
- How System Calls are Made
- Return Values & Error Numbers
- Labs
- Memory Management
- Dynamical Allocation
- Tuning malloc()
- Locking Pages
- Labs
- Files, Directories & Devices
- The Virtual File System
- The ext2/ext3 Filesystem
- Journaling Filesystems
- The ext4/ Filesystem
- Labs
- UNIX File I/O
- Opening & Closing
- Reading, Writing & Seeking
- Positional & Vector I/O
- Standard I/O Library
- Large File Support (LFS)
- Labs
- Stat Functions
- Directory Functions
- inotify
- Memory Mapping
- flock() & fcntl()
- Making Temporary Files
- Other System Calls
- Labs
- What is a Process?
- Process Limits
- Process Groups
- The proc Filesystem
- Inter-Process 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 & Destructors
- Waiting
- Daemon Processes
- Labs
- Pipes & Inter-Process Communication
- popen() & pclose()
- pipe()
- Named Pipes (FIFOs)
- splice(), vmsplice() & 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 & Sleeping
- Setting up a Signal Handler
- Signal Sets
- sigaction()
- Labs
- Reentrancy & Signal Handlers
- Jumping & Non-Local Returns
- siginfo & sigqueue()
- Real-Time Signals
- Labs
- Multi-threading under Linux
- Basic Program Structure
- Creating & Destroying Threads
- Signals & Threads
- Forking vs. Threading
- Labs
- Deadlocks & Race Conditions
- Mutex Operations
- Semaphores
- Futexes
- Conditional Operations
- Labs
- Networking Layers
- What are Sockets?
- Stream Sockets
- Datagram Sockets
- Raw Sockets
- Byte Ordering
- Labs
- Socket Address Structures
- Converting IP Addresses
- Host Information
- Labs
- Service Port Information
- Protocol Information
- Labs
- Basic Client Sequence
- socket()
- connect()
- close() & 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 & Setting Socket Options
- fcntl()
- ioctl()
- getsockopt() & setsockopt()
- Labs
- What are Netlink Sockets?
- Opening a Netlink Socket
- netlink Messages
- Labs
- Multiplexed & Asynchronous Socket I/O
- select()
- poll()
- pselect() & ppoll()
- epoll
- Signal Driven & 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
- Evaluation Survey
To attend the training session, you should have operational Desktops or Laptops with the required specification, along with a good internet connection to access the labs.
We would always recommend you attend the live session to practice & clarify the doubts instantly & get more value from your investment. However, if, due to some contingency, you have to skip the class, Radiant Techlearning will help you with the recorded session of that particular day. However, those recorded sessions are not meant only for personal consumption & NOT for distribution or any commercial use.
Radiant Techlearning has a data center containing a Virtual Training environment for the purpose of professional hand-on-practice.
Professionals can easily access these labs over Cloud with the help of a remote desktop connection.
Radiant virtual labs provide you the flexibility to learn from anywhere in the world & in any time zone.
The professionals will be enthralled as we engage them the real-world & industry Oriented projects during the training program. These projects will improve your skills & knowledge & you will gain a better experience. These real-time projects will help you a lot in your future tasks & assignments.