GNU/Linux Programming
Summary
The course introduces the developer to the basics of using a GNU/Linux system from the command-line, system software development, and network programming.
The filesystem hierarchy, process and job control, Emacs text editor, system boot sequence, package management is covered under using GNU/Linux. Buffered and unbuffered file I/O, process control and signals are covered under system software programming. Networking layers, networking commands, TCP sockets, UDP sockets and multiplexed I/O are covered under network programming.
Pre-requisite
-
Basic computer and internet usage.
-
C programming knowledge.
Duration
-
Duration: 60 hours
-
Span: 5 weeks
Syllabus
Command Line Basics
-
History of GNU/Linux
-
Logging On To The System
-
Changing Your Password
-
Using UNIX Commands
-
File and Directory Commands
-
Getting Help
-
Logging Off The System
The Filesystem
-
Hierarchical File Structure
-
File Types
-
File Names
-
Pathnames
-
Access Permissions
-
Mounting
Shell Basics
-
What is the Shell?
-
Processes
-
Job Control
-
Redirection
-
Variables
-
Quoting
-
Pipes and Filters
-
Scripting Introduction
Emacs
-
Emacs Screen
-
Cut, Copy, Paste
-
Undo
-
Search, Find and Replace
-
Handling Multiple Files - Concept of Buffers
-
Viewing Multiple Files - Concept of Windows
-
Editing Modes
-
Getting Help
System Boot Sequence
-
Overview
-
Role of Bootloader
-
Specifying Boot Arguments
-
Role of Ramfs
-
Role of Init
-
Runlevels
-
Getty and Login
-
Bash Login Script
Package Management
-
Installing Packages using apt-get
-
Removing Packages
-
Listing Packages
-
Compiling Packages from source
File I/O
-
File Descriptors
-
Opening and Closing Files
-
Reading and Writing to Files Sequentially
-
Reposition Read/Write File Offset
-
File Tables and File Descriptor Tables
-
Streams
-
Buffering
-
Opening and Closing Streams
-
Unformatted Text I/O
-
Unformatted Binary I/O
-
Positioning a Stream
-
Formatted Text I/O
-
Temporary Files
Date and Time
-
Getting System Time
-
Displaying Time
-
Finding out Elapsed Time
-
Sleeping
Basic Process Control
-
Process ID
-
Creating a New Process
-
Getting Exit Status of a Process
-
Executing a Program
-
Process Termination and Exit Status
Signals
-
Signal Basics
-
Handling Signals
-
Interrupted Syscalls
-
Sending Signals
-
Timers
-
Advanced Signal Handling
Networking Overiew
-
TCP/IP Layers
-
IP Address
-
Networking Devices
-
Accessing a System Remotely
-
Transfering Files Between Systems
Introduction to Sockets
-
Socket Address Structures
-
Value-Result Arguments
-
Byte Ordering Functions
-
Byte Manipulation Functions
-
inet_aton, inet_addr, and inet_ntoa Functions
-
inet_pton and inet_ntop Functions
-
Domain Name System
-
gethostbyname Function
TCP Sockets
-
socket Function
-
connect Function
-
bind Function
-
listen Function
-
accept Function
-
fork and exec Functions
-
Concurrent Servers
-
close Function
-
getsockname and getpeername Functions
-
TCP/IP client servers
UDP Sockets
-
recvfrom and sendto Functions
-
connect Function with UDP
-
UDP Issues
Advanced I/O
-
Non-blocking I/O
-
I/O Multiplexing

