Question: Should be written in C. Name your source code file sh.c ROLL YOUR OWN Write a simple shell. Your shell should prompt the user for

Should be written in C.

Name your source code file sh.c

ROLL YOUR OWN

Write a simple shell. Your shell should prompt the user for a command, run it, then prompt the user for their next command. If the user types "exit", then the shell should terminate. The shell should ignore Ctrl-C.

Inside the attached parse.h header file, there is a parse function that you can use to split up the command line into separate strings. Recall that execvp accepts two arguments: the name of the command, and then an array of command-line arguments as strings. The parse() function in parse.h accepts the string and returns the array of argument strings.

You can use parse.h or roll your own parse function.

PARSE.H

// splits input into separate strings

// inputs: input: a string to split up, args: an array of char pointers to

// store the separate strings

// outputs: an array of strings, with null in the last element, passed back

// through args

// preconditon: input is a valid c-string, read from the keyboard using fgets

// postcondition: args contains the separate strings, one

// string per element. Last element contains null

#ifndef PARSE_H

#define PARSE_H

#include "string.h"

static void parse( char* input, char* args[] )

{

int i = 0;

// fgets reads the , so overwrite it

input[strlen(input)-1] = '\0';

// get the first token

args[i] = strtok( input, " " );

// get the rest of them

while( ( args[++i] = strtok(NULL, " ") ) );

}

#endif

HINTS:

o Remember the logic for the shell :

while input != exit parse the command fork if parent process : wait else execvp command

o You'll need the chdir system call to add support for cd. This needs to be part of the shell as their is no cd system command.

o man chdir, execvp, wait, fork, strtok

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!