What you'll learn:
- Students should be able to write their own system call and utilize existing system call on Linux/Unix to create system software.
- Students should be able to understand Unix/Linux/Mac/Windows system in greater details
- It would also help to brush up the C coding skills of students
- For existing developer it would help them in writing better code, free from memory leaks and other resource leaks.
- Covers the practical aspect of system programming and gives a handson experience with System call
Description:
This course provides an in-depth exploration of system programming on POSIX-compliant operating systems. You'll learn to write robust C and C++ code at the system level, gaining a clear understanding of how Linux and Unix work under the hood. These skills form the foundation on which every user-facing application is built — mastering them will set you apart as a developer.
What You'll Learn:
Process Management — Fork system calls and their variants, PID status, defunct/zombie processes, and open file descriptor inheritance.
Threads — POSIX threads (pthreads), parameter passing, thread safety using semaphores and mutexes, and building producer-consumer applications.
File I/O — Unbuffered I/O with read/write system calls, buffered I/O with fopen/fwrite/fread/fseek/ftell/rewind, reading files line by line with getline, and understanding buffered vs. unbuffered operations.
Interprocess Communication (IPC) — Pipes, fork with pipe file descriptors, and popen.
Socket Programming — Building both server and client applications from scratch.
Signal Handling — Alarm signals, kill process signals, and writing custom signal handlers.
Directory Navigation — Using readdir and opendir to recursively traverse directory structures.
Writing System Calls — How system calls work internally and how to implement your own and interface with the kernel.
Lab Setup & Virtualization: The course also walks you through setting up your development environment, including compiling and debugging C/C++ code, and covers virtualization with VirtualBox, VMware Fusion, VMware Workstation, ESXi, Hyper-V, and Windows Subsystem for Linux.
By the end of this course, you'll write clean, efficient system-level code — free of memory leaks and resource leaks — with the confidence to work across Linux, Unix, macOS, and Windows environments.