As part of the CS210 Systems Programming module at the University of Strathclyde, Me and my team developed a custom shell written in C, designed to replicate functionality of a UNIX command-line terminal. This project provided insight into how operating systems interpret user-commands, how they are processed and given to the os.
Some core features of the shell include :
- Command Parsing : Implemented a tokenizer to handle user input, parsing commands and arguments with whitespace and special characters in mind.
- Process Execution : Utilized fork(), execvp(), and waitpid() to support execution of external programs, enabling concurrent command execution and proper child process management.
- Command history & Aliases : Implemented a history feature to keep track of user commands, allowing for easy retrieval and re-execution. Also supported command aliases for user convenience.
This project really taught me how important teamwork can be, and how working together can make the workload much more manageable. It also helped me become more comfertable using UNIX and helped push my programming skills to the next level.
Our team received a grade of 96% for this project.