Advanced UNIX Programming

This course explores the programming interface to UNIX: the system call interface and many of the functions provided in the standard C library. Networking and concurrency topics are also covered, enabling the student to attain a degree of sophistication required to develop elaborate applications.
The student should have taken an Introduction to C Programming course and an Introduction to UNIX course or have equivalent experience.
5 Days/Lecture & Lab
This course is designed for software developers, programmers, analysts, and engineers or those writing programs that run under UNIX.
  • Creating new processes with fork and exec
  • Allocating data structures on the stack and the heap
  • Compiling and debugging programs with gcc, gdb, and make
  • Managing data streams using the standard I/O library
  • Changing a process' effective owner or process group
  • Creating, deleting, renaming, accessing, and locking files, directories and links
  • Using named and unnamed pipes for rudimentary IPC
  • Establishing UNIX domain and inet domain sockets
  • Reading from multiple sources using multiplexed I/O
  • Sending and receiving UNIX signals
  • Utilizing shared memory for process communication
  • Synchronizing processes using semaphores
  • Identifying core concurrency issues, including race conditions, deadlocks, process starvation, critical sections, and mutual exclusion
  • Exploiting concurrency with POSIX threads
  • Controlling process resource limits

Related Scheduled Courses