110 likes | 227 Views
Programming Project #1. CS-3013 & CS-502 Operating Systems Summer 2006. Programming Assignment. Write a command called doit to execute another command and print out statistics Extend doit to become a basic shell that prompts for and executes commands
E N D
Programming Project #1 CS-3013 & CS-502Operating SystemsSummer 2006 Programming Project #1
Programming Assignment • Write a command called doit to execute another command and print out statistics • Extend doit to become a basic shell that prompts for and executes commands • Extend your shell to shell2 to execute commands in the background Programming Project #1
Purpose • To practice using the fork and exec facilities of Unix/Linux • To learn how to find and use on-line documentation about system calls and system facilities. • man pages • To be accustomed to speaking directly with the operating system Programming Project #1
Part 1: doit • doit command:– • Take another command line as argument • Execute that command • Print out statistics about command • Must execute on a CCC or CS Linux system • May not use system() system call • Helpful hints:– • fork(), execve(), wait() • getrusage(), gettimeofday() Programming Project #1
Part 1 (output) % doit cat /etc/motd < print the current message of the day > < statistics about the cat command > Programming Project #1
Part 2: shell • Repeatedly prompt for command lines • Execute each command and print out statistics, as in doit • Implement special “built-in” commands • exit • cd dir • Special conditions • Exit on end of file • Complain about illegal commands • Check for line length, number of arguments Programming Project #1
Part 2 output % shell ==>cat /etc/motd < print the current message of the day > < statistics about the cat command > ==>cd dir < current directory is changed to dir > ==>ls < listing of files in current directory > < statistics about this ls command > ==>exit % < back to the Unix prompt > Programming Project #1
Part 3: Background execution (shell2) • Modify shell to support execute commands in background, indicated by ‘&’ character • Causes shell to prompt for next command before previous command is complete • jobs built-in command lists background tasks in progress • Report completion at next opportunity Programming Project #1
Part 3 output % shell2 ==>numbercrunch & [1] 12345 < indicate background task #1, process id > ==>jobs [1] 12345 numbercrunch < print process id and command name for tasks > ==>ls < listing of files in the current directory > < statistics about this ls command > ==>cat /etc/motd [1] 12345 Completed < indicate background job done > < statistics about numbercrunch command > < print the current message of the day > < statistics about this cat command > ==>exit % < back to Unix prompt > Programming Project #1
Project submission • Due Monday, June 1 at start of class • Submit via turnin • command = ‘/cs/bin/turnin’ on CCC machines • classname = ‘cs502’ • assignment = ‘project1’ • Bring copy of code, test case, and printout to class. • Put your name on all files! Programming Project #1
Term Project Assignment Programming Project #1