Courses Offered: SCJP SCWCD Design patterns EJB CORE JAVA AJAX Adv. Java XML STRUTS Web services SPRING HIBERNATE  

       

IV. Linux System Programming Topic Details
 

 

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

Fine­Grained 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