Question Details

[solution] » Assignment-------------------------------------- Your assignment

Brief item decscription

Step-by-step solution file

Item details:

Assignment-------------------------------------- Your assignment


Your assignment is to build a program ?tish? that will implement the following shell services:

Run programs in foreground and background;

List all processes that currently run in the background.

Kill a process running in the background.

The precise requirements are as following:

Your shell should give a user ?tish>>? as a prompt;

There are two types of commands that ?tish? should understand:

External commands: the command name is, in fact, the name of an executable file. When an external command is requested this means that the corresponding executable file should be run.

Internal commands: commands that are ?built-in? in the ?tish? shell. For example, the ?bye? command does not correspond to any executable file. Instead, it causes ?tish? to execute the exit system call. Below we specify which internal commands you are required to implement.

Execution mode for external commands:

Foreground: a command is given in the following form tish>> <command_name> <list_of_parameters>. In this mode ?tish? does not return the prompt until the executable file that corresponds to the command finishes.

Background: a command is given in the same format as in the foreground mode, but the last parameter in the parameter list should be ?&?. for example:
tish>> emacs &

Example of running external commands:

tish>> emacs my_file.

List of Internal commands you are required to implement:

bye : terminate ?tish?. All background processes should be terminated. (Note that the real shell does not do this).

jobs : list of all background jobs in the following format: <pid> <command name>, in the order of creation.

kill :terminate the process corresponding to the specified pid by sending SIGTERM signal.

Recommendations and additional requirements:

You are required to use fork() and execvp(const char* file, const char* argv) system calls. execvp() is a version of the execve() system call in which the path and environment does not need to be specified. The file name should not! include a '/' char. If it does you should output a compatible error message. In this assignment you are required to deal with list of parameters no larger than 2. You are not required to check the type of the parameters you have received just to pass them on to the execvp() call in the right format.

You are NOT allowed to use the library function system() instead of fork/exec. This is because system() itself forks a new shell that forks the specified command. Using system() is absolutely prohibited in this exercise.


About this question:

This question was answered on: Feb 21, 2020

PRICE: $24 (18.37 KB)

Buy this answer for only: $24

This attachment is locked

We have a ready expert answer for this paper which you can use for in-depth understanding, research editing or paraphrasing. You can buy it or order for a fresh, original and plagiarism-free copy (Deadline assured. Flexible pricing. TurnItIn Report provided)

Pay using PayPal (No PayPal account Required) or your credit card. All your purchases are securely protected by PayPal.

Need a similar solution fast, written anew from scratch? Place your own custom order

We have top-notch tutors who can help you with your essay at a reasonable cost and then you can simply use that essay as a template to build your own arguments. This we believe is a better way of understanding a problem and makes use of the efficiency of time of the student. New solution orders are original solutions and precise to your writing instruction requirements. Place a New Order using the button below.

Order Now