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