100 likes | 217 Views
Programming Project #1. CS-502 Operating Systems Spring 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-502 Operating SystemsSpring 2006 CS502 Spring 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 • Extend your basic shell to execute commands in the background CS502 Spring 2006
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 CS502 Spring 2006
Part 1: doit • doit command:– • Take another command 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() CS502 Spring 2006
Part 1 (output) % doit cat /etc/motd < print the current message of the day > < statistics about the cat command > CS502 Spring 2006
Part 2: a basic shell • Repeatedly prompt for command lines • Execute each command and print out statistics, as in doit • Implement special “built-in” commands • exit • ch dir • Special conditions • Exit on end of file • Complain about illegal commands • Check for line length, number of arguments CS502 Spring 2006
Part 2 output % doit ==>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 > CS502 Spring 2006
Part 3: Background execution • 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 CS502 Spring 2006
Part 3 output % doit ==>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 > CS502 Spring 2006
Project submission • Due Monday, February 20 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. CS502 Spring 2006