Program B Documentation Last Update: Sun, Dec. 3, 2006 (2100 Hours) [[ Fill out this file (call it README) and include it in your electronic and hardcopy submissions. >>>>> In doing so, you should REPLACE all of the text enclosed in square brackets with what is requested. <<<<< Early Submitters: You do not need to submit a hardcopy, but you must provide an e-submission that contains a README file with Sections 1-3 below, source code, and test scripts. ]] 1. Program Status [[ State explicitly if your program is deficient or bug free or not. List the features that you did not fully implement and their status (e.g., designed, buggy implementation). If not bug free, list the problem(s). If you have clear conjectures as to the causes of the problems, list them. Summarize how your program deviates from the assignment (e.g., additional features). ]] 2. Overview 2.1 How to Build Executables [[ Give instructions on how to build each executable if 'make' doesn't compile all source code. ]] 2.2 Usage Standard Executables: [[ Indicate how your command-line syntax for executables differs from the specification (omissions, additions, variations). Give atleast one simple example in each case if it is not obvious. ]] 3. Program Description (Abbreviated) 3.1 Major Data Structures [[ List the major data structures that are specific to Project B but not Project A. Explain the purpose of each of these data structures. ]] 3.2 Features [[ Below is a list of Project B features. For each feature, indicate the main ideas you planned to use to implement the feature. Indicate where the actual implementation deviated from the plans. A sketch of some features have been provided as an example. [[ o xssh should continue to run even in the face of errors. These system call wrappers deal with errors: Execvp, Waitpid, Getenv, Setenv, Getcwd These will exit with an error message as in Project A: Fork o All builtin commands should be checked for the proper number of args. Check: bg, fg, quit, export, wait, chdir No check: echo o Pipeline ( C < F | ... | C' > F' & ) Modify the do_plumbing_alt() npipe.c code to work in Project B. o ctrl-c from the keyboard should terminate the foreground process(es) BG processes will be in different process group than FG processes. By default, FG processes other than xssh will terminate upon SIGINT. xssh should ignore SIGINT. o ctrl-z should stop the foreground process(es) o 'bg' and 'fg' commands o The 'mytime' command returns the real time, user time and system time spent by a command. o "mylimit N; fib -n 100" should allow fib to use no more than N seconds of CPU time. 3.3 Extra Functionality [[ Summarize any extra commands and functionality that you added. If none, just say "None". Be brief but not cryptic. ]] 4. Program Testing 4.1 Project A Tests [[ The course Web site provided three test scripts for Project A. Indicate what cases still fail and your conjecture as to why. ]] 4.2 Simple Successful Test Result [[ Describe the result of a simple test run. Include the output and explain why the output is correct. ]] 4.3 More Complicated Successful Test Result [[ Repeat 4.2 for your most involved working example. Describe the example, provide output, and explain how the output demonstrates the program is working correctly. ]] Appendix A: Source Code Listing Table of Contents: [[ Provide a list of the attached files ]] Listings: [[ Attach the printouts in the order specified in the Table of Contents. ]] Appendix B: [[ Put other details in additional appendices as needed. Omit if none. ]]