Project detail
Unix MiniShell: Custom OS Process Architecture
Engineered a custom Unix shell from scratch in pure C. Mastered low-level operating system mechanics including process orchestration, inter-process communication (IPC) via piping, and raw I/O redirection, proving a deep, foundational understanding of how the kernel actually works.

Systems Programming • C Language • Linux Kernel API • Process Management
The Problem: The "Terminal Illusion"
Most modern developers use the command line daily without understanding the kernel interactions powering it. High-level languages abstract away the raw system calls, leaving engineers blind to how memory and processes are actually managed. To truly master systems engineering, I needed to build the bridge between the user and the operating system from scratch, handling the dangerous low-level calls that others avoid.

The Build: System Calls & IPC Mastery
This project required bypassing standard libraries to talk directly to the Unix kernel.
Process Orchestration: Mastered the Unix process model using raw system calls (
fork(),execvp(),waitpid()) to spawn child processes, execute external binaries, and manage foreground/background execution flows flawlessly—without leaking memory or creating zombie processes.Inter-Process Communication (IPC): Engineered command piping (e.g.,
ls | grep txt) by manually managing file descriptors. Utilizingpipe()anddup2(), I built the infrastructure that allows data to flow seamlessly and securely between independent memory spaces.

The Magic: Signal Resilience & Internal State
I/O Redirection & Signal Handling: Built robust architecture for input/output redirection (
<,>,>&) by directly manipulating standard OS streams. Engineered custom signal handlers to ensure the shell itself is completely resilient to interrupts (Ctrl+C, Ctrl+Z), routing them correctly to foreground jobs without crashing the main process.Internal Command Architecture: Developed an isolated internal logic engine for commands that modify the shell's own environment. Commands like
cdandexportmanipulate the active process state directly, proving an understanding of environment variables and memory context beyond external executables.


