Computer Science 330
Operating Systems

Spring 2012, Siena College

Programming Project 3: The Roger Bacon Shell
Part 1 Due: 10:00 AM, Tuesday, March 6, 2012
Part 2 Due: 9:20 AM, Friday, March 23, 2012

For this lab, you are to write a C program called the Roger Bacon Shell (rbsh), a mini command shell interpreter. rbsh 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, Monday, February 27, 2012, and be confirmed by all group members by electronic mail to jteresco AT 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 10:00 AM, Tuesday, March 6, 2012. The remainder is due at 9:20 AM, Friday, March 23, 2012. Please refer to the grading guidelines at the end of this document for the specific functionality required for your part 1 submission.


Like the Unix shells you use every day, rbsh 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:


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 Roger Bacon program. Send this tar file as an attachment to jteresco AT

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!