You really built this?
i built a unix 0-shell from scratch in Rust using Unix system calls through rust libc bindings. The goal was not to create another shell but to better understand how the operating system manages processes memory signals and the terminal. Here are some of the features I implemented :
Process creation and execution with fork() and execvp() Built-in commands: cd, pwd, mkdir- cp- mv- rm- cat- and - ls (with -a, -l, and -F) Background execution using & Job control commands: jobs- fg- bg- and - kill Signal handling for SIGINT && SIGTSTP Foreground process group management with tcsetpgrp() Zombie process cleanup using waitpid() with WNOHANG and WUNTRACED One of the most interesting parts was building the job management system. The kernel stores process information in Process Control Blocks task_struct (PCB) While my shell cannot access or modify the kernel [PCB] I built a user-space job table inspired by them. Each job stores the process ID, process group, command, and current state (Running, Stopped, or Done). Building this feature helped me better understand how the kernel tracks process lifecycles.
This project also helped me understand several important operating system concepts How fork() uses Copy-on-Write [COW] to create processes efficiently. How execvp() replaces a process image while keeping the same process ID. How executable files are mapped into virtual memory during execution. How signals and process groups work together to support interactive shells. The biggest lesson I learned is that a simple command like ls depends on many operating system components working together. Process creation, memory management, signal handling scheduling and terminal control all happen behind the scenes
You really built this?