Home CprE 308 Shell Design

CprE 308 Shell Design


During CprE 308 we were tasked with creating our own version of a shell for interacting with a linux operating system. This project was creative and enjoyable for me.

My Role

As this wasn’t a team project I was responsible for the entire development of this shell. I started by creating a basic input output system that allowed a user to enter commands. There were three main types of commands my shell needed to be able to handle. First I needed to be able to handle standard commands with no arguments (ls), commands with arguments (ls -la), and commands that are being run in the background, (ping &).

Lessons Learned

Most of this project was review for me as I had written a fair amount of code in C before attempting this. The portion of my shell that I learned the most from was the backgrounding and process management code. Before taking this class I hadn’t ever needed to write multithreaded applications. Through this project and the other major assignments in this class I was forced to confront these unknowns and become at least a little bit familiar with the different ways you’re able to make C programs more efficient by spinning off large work loads into separate threads.

Resources Used

I used so many stackoverflow posts and a lot of help from the TA. On top of informal help, I also spent a fair amount of time reading the standards for “MIPS assembly language” to ensure that my instructions were being parsed correctly

This post is licensed under CC BY 4.0 by the author.