Computer Science 432/563
Operating Systems

Spring 2016, The College of Saint Rose

Programming Project 3: The Knight Shell
Part 1 Due: 11:59 PM, Tuesday, March 22, 2016
Part 2 Due: 11:59 PM, Monday, April 4, 2016


For this lab, you are to write a C program called the Knight Shell (knish), a mini command shell interpreter. knish is similar to familiar Unix shells such as the Bourne shell (sh) the Bourne-Again shell (bash), and C shell (csh, tcsh). You will learn about process creation, pipes, input/output redirection, background process management, signals, and interrupt handling, and gain extensive experience with C.

You may work alone in groups of size 2 or 3. Collaboration within a group is, of course, unrestricted. You may discuss the program with members of other groups, but what you turn in must be your own group's work. Groups must be formed no later than 4:00 PM, Friday, March 4, 2016, and be confirmed by all group members by electronic mail to terescoj AT strose.edu. All group members will be assigned the same grade for the lab. There are many subtasks that can be carved off and assigned to group members, so everyone is encouraged to join a group.

There are two parts for your work on this project. The basic functionality to run a single command is part 1, and is due at 11:59 PM, Tuesday, March 22, 2016. The remainder is due at 11:59 PM, Monday, April 4, 2016. Please refer to the grading guidelines at the end of this document for the specific functionality required for your part 1 submission.

Requirements

Like the Unix shells you use every day, knish should issue a prompt (below, it is "shell#"), at which it reads commands from the user and executes them.

Your shell should interpret the following commands and provide the following functionality:

Notes

Submission and Evaluation

For each part, all necessary files should be submitted in a single tar file shell.tar. Include a Makefile to allow easy compilation of the Knight Shell program. Send this tar file as an attachment to terescoj AT strose.edu.

Your program will be graded based on a total of 50 points.

Penalties may be applied for poor design choices, poor formatting of code, poor programming style, or if your program compiles with warnings (when using gcc -Wall).

Have fun and good luck!