fbpx

Linux System Programming

  1. Getting Started
    • The GNU project and Free Software Foundation
    • UNIX history recap and Linux recap
    • Linux/UNIX architecture overview
    • Linux/UNIX filesystem overview
    • Layout of C program in memory
    • Introduction to Main memory
  2. Development tools and utilities
    • Brief on compilation process toolchain (Preprocessor, Compiler, Assembler and Linker)
    • GDB debugger
    • Make Utility
    • Archive utility
    • Object file format
    • Executable or binary file formats
    • Decoding ELF object files using binary tools
    • Converting executable to different formats
  3. The GNU C Library and System Calls
    • Library Standards
    • GNU C Library – glibc
    • Library Functions (or API) vs System Calls
    • Using System Calls
    • Handling errors with errno
    • Using strace
  4. Linux Environment
    • Program Arguments (using argc, argv)
    • Handling options with getopt()
    • Environment variables
    • Time functions
    • User information
    • Host information
    • Temporary files
    • Makefile program
  5. Building Libraries
    • Why use Libraries?
    • Static versus shared
    • Creating a static library
    • Using a static library
    • Creating a shared library
    • Using a shared library
    • Library locations
  1. Process Control
    • What is a process?
    • Process relationships
    • Creating a child process
    • Related exec functions
    • Alarms and timers
    • Zombie, Daemon and Orphan processes
  2. Working with files
    • Overview
    • Linux file structure
    • Opening/Closing files
    • Input/Output functions
    • Repositioning file descriptors
  3. Inter Process Communication
    • Introduction to pipes
    • Standard I/O: popen()/pclose()
    • Using pipe()
    • Named pipes
    • Using named pipes
    • IPC Overview (System V)
    • Shared Memory (System V)
    • Semaphores (System V)
    • Message Queues (System V)