CS 332: Operating Systems

A little command shell

Due 8:30 AM Monday, 4/28/08. Hand in using HSP.

Write a small command shell. In particular, your shell should:

  1. Print a prompt.
  2. Get a command line from the user
  3. Search the $PATH environment variable for a program whose name is the first word in the command string, and fork a child process to execute the first such program found, passing the command-line arguments (including the program name itself) to the program (or printing an error message if no command is found)
  4. wait for the execution to finish (unless the command was terminated with an &, in which case you should go to step 5 immediately).
  5. Go to step 1.

Your shell should also trap CTL-C's--upon receiving a SIGINT, it should tell the user to type CTL-] followed by <return> to quit your shell.

You may work with a partner or alone, as you wish.

Here are a few technical points that may interest you:

Important constraints

Once again, I would appreciate your assistance in making this program logistically easy to grade. Everybody followed the spec last time, and it helped me immensely. Again, following these rules will be worth one point.

  1. Write your program in a single source file named shell.c (all lower case).
  2. If you need to submit a revised version of your program, call it shell1.c. A revision of the revision should be called shell2.c, etc.
  3. Don't submit a folder for this assignment--just shell.c. If you have "readme" information to communicate to me, just put it in the comment at the top of shell.c.