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