Subversion Repositories Code-Repo

Rev

Blame | Last modification | View Log | RSS feed

Student Information
-------------------
Kevin Lee - klee482 - group244


How to execute the shell
------------------------
The shell can be started by running ./esh
Basic functionality can be tested by running ./stdriver.py -b
Advanced functionality can be tested by running ./stdriver.py -a


Important Notes
---------------
A more comprehensive test for exclusive access can be done by
running/suspending vim from inside the shell.


Description of Base Functionality
---------------------------------
The shell implements the following built in commands: jobs, fg, bg, kill, stop.
The shell also implements \^C and \^Z to stop and suspend foreground 
processes. For each specified pipeline (seperated by ;), the first command
is checked to see if it is a built in command. If it is, the built in command is
executed and all following commands in the pipeline are ignored. The command
jobs outputs a list of all background jobs and the state of each job along with
a job ID. The job ID can then be used by commands fg, bg, kill, and stop. \^C
kills the current foreground job (including the esh shell) and \^Z suspends the
current foreground job.


Description of Extended Functionality
-------------------------------------
The shell also implements I/O redirection, pipes, and exclusive access. 
Multilpe commands can be chained together using '|' so that the output of 
the first process goes to the input of the second process. I/O redirection 
is also implemented so that a file can be used as the imput to the first 
command using '<' . The output of the last process can be directed to a file 
as well using '>'. Appending the output to the specified file works as well 
with '>>'. Exclusive access is also implemented using process groups and
terminal access to allow programs such as vim to work.


List of Plugins Implemented
---------------------------
N/A