A bash-like shell that performs basic functions of a shell. Made as a project for my course of System Software.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Screenshots
Makefile
Project Handout.pdf
README.md
myint
myint.c
myspin
myspin.c
mysplit
mysplit.c
mystop
mystop.c
sdriver.pl
trace01.txt
trace02.txt
trace03.txt
trace04.txt
trace05.txt
trace06.txt
trace07.txt
trace08.txt
trace09.txt
trace10.txt
trace11.txt
trace12.txt
trace13.txt
trace14.txt
trace15.txt
trace16.txt
tsh
tsh.c
tshref

README.md

Tiny Shell

By Akash Gajjar

Requirements

Knowledge of c programming, linux commandline and linux processes is required to understand this piece of code.

Brief Intro

This is a part of an assignment in my course of System Software. This is a look alike shell program and it has a limited functionality. It is an easy project if you follow getting started pdf.

Files

  • Makefile - Compiles your shell program and runs the tests
  • README.md - This file
  • tsh.c - The heart of this whole project
  • tshref - The reference shell binary.

Wraping the head around

  • run make test<testnumber> to run tests on tsh which are specified in the trace files
  • run make rtest<testnumber> to compare the tsh output with tshref (which is the reference shell)

Screenshots

test1

The files that are used to test shell

  • sdriver.pl # The trace-driven shell driver
  • trace*.txt # The 15 trace files that control the shell driver

Little C programs that are called by the trace files

  • myspin.c - Takes argument n and spins for n seconds
  • mysplit.c - Forks a child that spins for n seconds
  • mystop.c - Spins for n seconds and sends SIGTSTP to itself
  • myint.c - Spins for n seconds and sends SIGINT to itself