Syllabus:
IV.
Linux System Programming
Linux is
used in almost all system domains (Networking/Telecom) and also
most of the RTOS are very similar to Linux.
So learning of Linux programming will help you in understanding
and work easily in system domain as well as in embedded systems.
A. The GNU C Library and System
Calls
Library Goals
Library Standards
GNU C Library glibc
Library Functions vs. System Calls
Using System Calls
Handling Errors with errno
Making Sense of errno
Using strace
B. Program Arguments and Environment
Program Startup
Using argc/argv
Handling Options with getopt()
Handling Options with getopt_long()
Environment
Manipulating the Environment
Program Exit
Registering Exit Handlers
C. Building Libraries
Why Use Libraries?
Static Versus Shared
Static Library Benefits
Shared Library Benefits
Creating a Static Library
Using Static Libraries
Creating a Shared Library
Using Shared Libraries
Shared Library Management
Library Locations
ldconfig
D. Time Functions
When Does Time Begin?
Time Data Types
Determining Real Time
Converting time_t
Converting tm Structure
Process Time
Time arithmetic
Second Resolution Timers
FineGrained Timers
Real Time Clock (RTC)
E. Process Management
What a Process Is
Process Relationships
Create a Child Process
Doing Something Else
Related execve() Functions
Wait For a Child
More Precise Waiting
Changing Priority/Nice
Real Time Priority
F. Memory Operations
Allocating/Freeing Memory
Memory Alignment
Locked Memory
Memory Copy/Initialization
Memory Comparison/Search
G. Debugging
What Is My Program Doing?
Source Level Debugging
Invoking gdb
Getting Started with gdb
Examining and Changing Memory
Debuginfo Libraries
Using gdb with a Running Process
Using gdb to Autopsy a Crash
Debugging Libraries ElectricFence
Debugging with valgrind
Profiling for Performance
H. Basic File Operations
Stream vs. System Calls
Opening/Closing Streams
Stream Input/Output Functions
Stream Status/Errors
Stream File Positioning
Stream Buffering
Temporary/Scratch Files
Opening/Closing File Descriptors
File Descriptor I/O
Repositioning File Descriptors
Stream/File Descriptor Conversions
cat using ANSI I/O
cat using POSIX I/O
I. Communicating with Pipes
Introduction to Pipes
Standard I/O: popen()/pclose()
Using popen()/pclose()
System Call: pipe()
Using pipe()
Named Pipes
Using Named Pipes
For Further Reading
J. Managing Signals
What Signals Are
Blocking/Checking Signals
Working with Signal Sets
Example of Blocking Signals
Handling Signals with sigaction()
sigaction() Example
Handling Signals with signal()
Sending Signals
K. Programming with Threads
Introducing Threaded Programming
Applications Suited to Threads
Building Threaded Programs
Creating Threads
Thread Identity
Synchronizing by Joining
Detaching Threads
Stopping Threads
Synchronizing with Mutexes
Using Mutexes
Read/Write Locks
Conditional Variables
Using Conditional Variables
L. Advanced File Operations
Directory Operations
File System Operations
Multiplexed I/O with select()
Miscellaneous I/O Functions
Memory Mapped I/O
Using Memory Mapped I/O
File Locking
M. Interprocess Communication
Interprocess Communication (IPC)
POSIX IPC Overview
POSIX Shared Memory
POSIX Semaphores
POSIX Message Queues
System V IPC Overview
System V IPC Shared Memory
System V IPC Semaphore Arrays
System V IPC Message Queues