当前位置:天才代写 > C++/C代写 > shell program代写 Programming代写 shell program代写 function代写

shell program代写 Programming代写 shell program代写 function代写

2021-03-17 17:38 星期三 所属: C++/C代写 浏览:48

shell program代写

Programming Assignment 1: Shell CSE3320

shell program代写 In this assignment you will write your own shell program, Mav shell (msh), similar to bourne shell (bash), c-shell (csh)

Due: February 11th, 2019 5:30PM

Description shell program代写

In this assignment you will write your own shell program, Mav shell (msh), similar to bourne shell (bash), c-shell (csh), or korn shell (ksh). It will accept commands, fork a child process and execute those commands. The shell, like csh or bash, will run and accept commands until the user exits the shell. Your file must be named msh.c

shell program代写
shell program代写

Functional Requirements shell program代写

Requirement 1: Your program will print out a prompt of msh> when it is ready to accept input. It must read a line of input and, if the command given is a supported shell command, it shall execute the command and display the output of the command.

Requirement 2: If the command is not supported your shell shall print the invalid command followed by “: Command not found.”

Requirement 3: If the command option is an invalid option then your shell shall print the command followed by “: invalid option –” and the option that was invalid as well as a prompt to try —help. exec() outputs this automatically make sure you pass it on to your user. 

shell program代写
shell program代写

Requirement 4: After each command completes, your program shall print the msh>

prompt and accept another line of input.shell program代写

Requirement 5: Your shell will exit with status zero if the command is “quit” or “exit”.

Requirement 6: If the user types a blank line, your shell will, quietly and with no other output, print another prompt and accept a new line of input.

Requirement 7: Your shell shall support suspending the process with ctrl-z

Requirement 8: Your shell shall background a suspended process with bg

shell program代写
shell program代写

Requirement 9: Your version of Mav shell shall support up to 10 command line parameters in addition to the command.

Requirement 10: Your shell shall support and execute any command entered. Any command in /bin, /usr/bin/, /usr/local/bin/ and the current working directory is to be considered valid for testing.shell program代写

Your shell shall search in the following PATH order:

1.Current workingdirectory,

2./usr/local/bin

3./usr/bin

4./bin

Parameters may also be combined. For example, ps may be executed as: ps –aef or ps –a –e -f

Requirement 11: Mav shell shall be implemented using fork(), wait() and one of the exec family of functions.

Your Mav shell shall not use system(). Use of system() will result in a grade of 0.

Requirement 12: Typing ctrl-c or ctrl-z shall not stop or kill your shell. ctrl-z shall suspend the currently running process. ctrl-c shall stop the currently running process.

Requirement 13: Your shell shall support the cd command to change directories. Your shell must handle cd .. shell program代写

Requirement 14: Your shell shall support the listpids command to list the PIDs of the last 15 processes spawned by your shell. If there have been less than 15 processes spawned then it shall print only those process PIDs

shell program代写
shell program代写

Requirement 15: Your shell shall support the history command which will list the last50 commands entered by the user. Typing !n, where n is a number between 1 and 15 will result in your shell re-running the nth command. If the nth command does not exist then your shell will state “Command not in history.”. The output shall be a list of numbers 1 through n and their commands, each on a separate line, single spaced.shell program代写

If there are less than 50 commands in the history only list the commands the user has entered up to that point.

Requirement 16: A list of commands separated by semicolons should be executed in sequence.

msh> echo foo; echo bar; echo baz foo

bar baz

Requirement 17: Your source file shall be named msh.c. The source files must be ASCII text files. No binary submissions will be accepted.

Requirement 18: Tabs or spaces shall be used to indent the code. Your code must use one or the other. All indentation must be consistent.

Requirement 19: No line of code shall exceed 100 characters.shell program代写

Requirement 20: Each source code file shall have the following header filled out:

Requirement 21: All code must be well commented. This means descriptive comments that tell the intent of the code, not just what the code is executing.

The following are poor comments.

shell program代写
shell program代写

The following explains the intent:

When in doubt over comment your code.

Requirement 22: Keep your curly brace placement consistent. If you place curly braces on a new line , always place curly braces on a new end. Don’t mix end line brace placement with new line brace placement.

Requirement 23: Each function should have a header that describes its name, any parameters expected, any return values, as well as a description of what the function does. For example

Requirement 24: Remove all extraneous debug output before submission. The only output shall be the output of the commands entered or the shell prompt.

Administrative shell program代写

This assignment must be coded in C. Any other language will result in 0 points. You programs will be compiled and graded on omega.uta.edu. Please make sure they compile and run on omega before submitting them. Code that does not compile on omega with:

gcc -Wall msh.c -o msh

will result in a 0.

Your program, msh.c is to be turned in via blackboard. Submission time is determined by the blackboard system time. You may submit your programs as often as you wish.

Only your last submission will be graded.

There are coding resources and working code you may use on Blackboard and in the course github repository at: https://github.com/CSE3320/Shell-Assignment . You are free to use any of that code in your program if needed. You may use no other outside code.

Academic Integrity

This assignment must be 100% your own work. No code may be copied from friends, previous students, books, web pages, etc. All code submitted is automatically checked against a database of previous semester’s graded assignments, current student’s code and common web sources. By submitting your code on blackboard you are attesting that you have neither given nor received unauthorized assistance on this work. Code that is copied from an external source or used as  inspiration,  excluding  the  course  github  or  blackboard,  will  result  in  a  0  for  the  assignment  and referral to the Oce of Student Conduct.shell program代写

Hints

Read the man pages for the following: fork, exec, exit, print, fgets, strtok, strsep, strcmp, wait, and pause.

Use fork and one of the exec family as discussed in class to execute the command and call wait to wait for the child to complete. If the command is “cd” then use chdir() instead of exec. Note, chdir() must be called from the parent.shell program代写

If you see garbage in any of your commands or parameters, try using the functions memset() or bzero() to clear out your input string and token array before and/or after you are done using them. Also, verify you are NULL terminating your strings.

https://stackoverflow.com/questions/12683466/after-suspending-child-process-with-sigtstp- shell-not-responding

shell program代写
shell program代写

其他代写:algorithm代写 analysis代写 app代写 assembly代写 assignment代写 C++代写 C/C++代写 code代写 course代写 dataset代写 finance代写 java代写 source code代写 Task代写 web代写 作业加急 北美代写 北美作业代写 数据分析代写 编程代写

合作平台:essay代写 论文代写 写手招聘 英国留学生代写

 

天才代写-代写联系方式