| 141 |
Kevin |
1 |
Student Information
|
|
|
2 |
-------------------
|
|
|
3 |
Kevin Lee - klee482 - group244
|
|
|
4 |
|
|
|
5 |
|
|
|
6 |
How to execute the shell
|
|
|
7 |
------------------------
|
|
|
8 |
The shell can be started by running ./esh
|
|
|
9 |
Basic functionality can be tested by running ./stdriver.py -b
|
|
|
10 |
Advanced functionality can be tested by running ./stdriver.py -a
|
|
|
11 |
|
|
|
12 |
|
|
|
13 |
Important Notes
|
|
|
14 |
---------------
|
|
|
15 |
A more comprehensive test for exclusive access can be done by
|
|
|
16 |
running/suspending vim from inside the shell.
|
|
|
17 |
|
|
|
18 |
|
|
|
19 |
Description of Base Functionality
|
|
|
20 |
---------------------------------
|
|
|
21 |
The shell implements the following built in commands: jobs, fg, bg, kill, stop.
|
|
|
22 |
The shell also implements \^C and \^Z to stop and suspend foreground
|
|
|
23 |
processes. For each specified pipeline (seperated by ;), the first command
|
|
|
24 |
is checked to see if it is a built in command. If it is, the built in command is
|
|
|
25 |
executed and all following commands in the pipeline are ignored. The command
|
|
|
26 |
jobs outputs a list of all background jobs and the state of each job along with
|
|
|
27 |
a job ID. The job ID can then be used by commands fg, bg, kill, and stop. \^C
|
|
|
28 |
kills the current foreground job (including the esh shell) and \^Z suspends the
|
|
|
29 |
current foreground job.
|
|
|
30 |
|
|
|
31 |
|
|
|
32 |
Description of Extended Functionality
|
|
|
33 |
-------------------------------------
|
|
|
34 |
The shell also implements I/O redirection, pipes, and exclusive access.
|
|
|
35 |
Multilpe commands can be chained together using '|' so that the output of
|
|
|
36 |
the first process goes to the input of the second process. I/O redirection
|
|
|
37 |
is also implemented so that a file can be used as the imput to the first
|
|
|
38 |
command using '<' . The output of the last process can be directed to a file
|
|
|
39 |
as well using '>'. Appending the output to the specified file works as well
|
|
|
40 |
with '>>'. Exclusive access is also implemented using process groups and
|
|
|
41 |
terminal access to allow programs such as vim to work.
|
|
|
42 |
|
|
|
43 |
|
|
|
44 |
List of Plugins Implemented
|
|
|
45 |
---------------------------
|
|
|
46 |
N/A
|