Overview:
During CprE 308 we were tasked with creating our own version of a shell for interacting with a linux operatin system. Whereas my CprE 381 project was mostly hard work and applying difficult concepts, this project was more creative and enjoyable for me. I ended up calling my shell dsh (david shell) and have it hosted at on my github.
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. Fisrt 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 multithredded 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 seperate 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