Need help with your Discussion

Get a timely done, PLAGIARISM-FREE paper
from our highly-qualified writers!

glass
pen
clip
papers
heaphones

Design a C program to serve as a shell interface that accepts user commands and then executes each command in a separate process.

Design a C program to serve as a shell interface that accepts user commands and then executes each command in a separate process.

Design a C program to serve as a shell interface that accepts user commands and then executes each command in a separate process.

Question Description

Design a C program to serve as a shell interface that accepts user commands and then executes each command in a separate process. A shell interface gives the user a prompt, after which the next command is entered. The format of the prompt is: FirstName-L3SID>

Assuming your first name is demo and L3SID is 123, and the user’s next command is cat prog.c, so you would enter: demo-123> cat prog.c

The shell process first prints the prompt, reads what the user enters on the command line (in the above case, cat prog.c), and then creates a separate child process that performs the command. Unless otherwise specified, the shell (parent) process waits for the child to exit before printing the next prompt and continuing. However, UNIX shells typically also allow the child process to run in the background, or concurrently. To accomplish this, we add an ampersand (&) at the end of the command. Thus, if we rewrite the above command as: demo-123> cat prog.c &, the shell (parent) and child processes will run concurrently. In both cases the separate child process is created using the fork() system call, and the user’s command is executed using one of the system calls in the exec() family. For any command running in the background, the shell (parent) process does not wait for the completion of the child process; the shell prints the prompt and reads the next command immediately.

A C program that provides the general operations of a command-line shell is as follows.

#include <stdio.h>


#include <unistd.h>


#include <time.h>


#define MAXLINE 80 /* The maximum length command */

int main(void)

{

char *args[MAXLINE/2 + 1]; /* command line with max 40 arguments */

int should_run = 1; /* flag to determine when to exit program */

printf(“CS149 Shell from FirstName LastNamen”); /* replace w/ name */

while (should_run) {

printf(“FirstName-L3SID>”); /* prompt- replace FirstName and L3SID */

fflush(stdout);

/* After reading user input, the steps are:

* (1) fork a child process using fork()


* (2) the child process will invoke execvp()


* (3) if command included &, parent will NOT invoke wait()

*/

}

return 0;

}

The main() function presents the prompt and outlines the steps to be taken after input from the user has been read. The main() function continually loops as long as should_run equals 1; when the user enters exit at the prompt, your shell will set should_run to 0 and terminate.

You should modify the main() function so that a child process is forked and executes the command specified by the user. This will require parsing what the user has entered into separate tokens and storing the tokens in an array of character strings args. For example, if the user enters the command

ps –af at the prompt, the values stored in the args array are:

args[0] = “ps”

args[1] = “-af”

args[2] = NULL

This args array will be passed to the execvp() function, which has the following prototype:

execvp(char *command, char *params[]);

Here, command represents the command to be performed and params stores the parameters to this command. The execvp() function should be invoked as execvp(args[0], args). Be sure to check whether the user included an & to determine whether or not the shell (parent) process is to wait for the
child to exit.

When fork() or execvp() failed, the shell should print out error messages, output the prompt and accept the next command from user.

The shell does not need to support any additional functions such as pipe, and I/O redirection.

Compile your program with “gcc –o shell shell.c”. You can execute the program with “./shell”.

Do Not Copy From Chegg or course hero

Have a similar assignment? "Place an order for your assignment and have exceptional work written by our team of experts, guaranteeing you A results."

Order Solution Now

Our Service Charter


1. Professional & Expert Writers: Eminence Papers only hires the best. Our writers are specially selected and recruited, after which they undergo further training to perfect their skills for specialization purposes. Moreover, our writers are holders of masters and Ph.D. degrees. They have impressive academic records, besides being native English speakers.

2. Top Quality Papers: Our customers are always guaranteed of papers that exceed their expectations. All our writers have +5 years of experience. This implies that all papers are written by individuals who are experts in their fields. In addition, the quality team reviews all the papers before sending them to the customers.

3. Plagiarism-Free Papers: All papers provided by Eminence Papers are written from scratch. Appropriate referencing and citation of key information are followed. Plagiarism checkers are used by the Quality assurance team and our editors just to double-check that there are no instances of plagiarism.

4. Timely Delivery: Time wasted is equivalent to a failed dedication and commitment. Eminence Papers are known for the timely delivery of any pending customer orders. Customers are well informed of the progress of their papers to ensure they keep track of what the writer is providing before the final draft is sent for grading.

5. Affordable Prices: Our prices are fairly structured to fit in all groups. Any customer willing to place their assignments with us can do so at very affordable prices. In addition, our customers enjoy regular discounts and bonuses.

6. 24/7 Customer Support: At Eminence Papers, we have put in place a team of experts who answer all customer inquiries promptly. The best part is the ever-availability of the team. Customers can make inquiries anytime.

We Can Write It for You! Enjoy 20% OFF on This Order. Use Code SAVE20

Stuck with your Assignment?

Enjoy 20% OFF Today
Use code SAVE20