create a linux shell program

Learning Goal: I’m working on a c programming project and need support to help me learn.

WHAT TO DO

In this assignment you are to create a Linux shell program. A shell is simply a program that conveniently allows you to run other programs. Read up on your favorite shell to see what it does.

DETAILS

Your shell must support the following:

  1. The internal shell command “exit” which terminates the shell.
    Concepts: shell commands, exiting the shell
    System calls: exit()
  2. A command with no arguments
    Example: ls
    Details: Your shell must block until the command completes and, if the return code is abnormal, print out a message to that effect.
    Concepts: Forking a child process, waiting for it to complete, synchronous execution
    System calls: fork(), execvp(), exit(), wait()
  3. In essence, your solution must support the following:

Your solution must also support the following:

  1. A command with arguments
    Example: ls -l
    Details: Argument 0 is the name of the command
    Concepts: Command-line parameters
  2. A command, with or without arguments, executed in the background using &.
    For simplicity, assume that if present the & is always the last thing on the line.
    Example: xemacs &
    Details: In this case, your shell must execute the command and return immediately, not blocking until the command finishes.
    Concepts: Background execution, signals, signal handlers, processes, asynchronous execution.
  3. A command, with or without arguments, whose output is redirected to a file
    Example: ls -l > foo
    Details: This takes the output of the command and put it in the named file
    Concepts: File operations, output redirection.
  4. A command, with or without arguments, whose input is redirected from a file
    Example: sort < testfile
    Details: This takes the named file as input to the command.
    Concepts: Input redirection, more file operations.
  5. A command, with or without arguments, whose output is piped to the input of another command.
    Example: ls -l | more
    Details: This takes the output of the first command and makes it the input to the second command.
    Concepts: Pipes, synchronous operation.

Note: You must check and correctly handle all return values. This means that you need to read the man pages for each function to figure out what the possible return values are, what errors they indicate, and what you must do when you get that error.

 

HINTS

  1. You will need to make use of system calls such as execvp()fork()pipe()wait() and dup2().
  2. Assume the user enters “ls –lt | sort | more”. Your shell would create a process for each command. A pipe must be created (using the pipe command) between the first and second process and the second and third process. Creating a pipeline between two processes is relatively simple, but the building of a multiple command pipeline is more involving.
  3. You may use any of the system calls found in the exec() family. If you use execvp, remember that the first argument in the array is the name of the command itself, and the last argument must be a null pointer.
  4. A shell needs a command-line parser. The parser breaks down the string representing the command into constituent parts. These parts are referred to as tokens. The parser you implement may use scanf()strtok() or any other suitable C library functions. Parsing requires these steps:
    1. Read a line from standard input.
    2. token is a sequence of non-whitespace characters that is separated from other tokens by whitespace characters. For each command line, you should form an array of tokens. This can be done using the strtok() system call, for instance.
    3. You should determine commands by analyzing the array created in the previous step. Any tokens between pipe signs are considered to be part of the same command.
  • Develop your code in incremental stages. One order of stages is the following:
  1. Add support for pipes
  2. A structure to help you develop your code will be provided.

DOCUMENTATION

Your program must be developed using GNU versions of the C compiler running any Linux distribution. It should be layered, modularized and well commented. The following is a tentative marking scheme and what is expected to be submitted.

  1. External Documentation including as many pages as necessary to fulfill the requirements listed below.
    1. Title page
    2. A table of contents
    3. [20%] System documentation

i.A high-level data flow diagram for the system

ii.A list of routines and their brief descriptions

iii.Implementation details including information such as data structures and algorithms used.

  1. [5%] Test documentation

i.How you tested your program

ii.Testing outputs

  1. [5%] User documentation

i.How to run your program

ii.Describe parameter (if any)

  1. Source Code
    1. [65%] Correctness
    2. [5%] Programming style
attachment_1
attachment_2
attachment_3
attachment_4
attachment_5
Place your order
(550 words)

Approximate price: $22

Calculate the price of your order

550 words
We'll send you the first draft for approval by September 11, 2018 at 10:52 AM
Total price:
$26
The price is based on these factors:
Academic level
Number of pages
Urgency
Basic features
  • Free title page and bibliography
  • Unlimited revisions
  • Plagiarism-free guarantee
  • Money-back guarantee
  • 24/7 support
On-demand options
  • Writer’s samples
  • Part-by-part delivery
  • Overnight delivery
  • Copies of used sources
  • Expert Proofreading
Paper format
  • 275 words per page
  • 12 pt Arial/Times New Roman
  • Double line spacing
  • Any citation style (APA, MLA, Chicago/Turabian, Harvard)

Our guarantees

Delivering a high-quality product at a reasonable price is not enough anymore.
That’s why we have developed 5 beneficial guarantees that will make your experience with our service enjoyable, easy, and safe.

Money-back guarantee

You have to be 100% sure of the quality of your product to give a money-back guarantee. This describes us perfectly. Make sure that this guarantee is totally transparent.

Read more

Zero-plagiarism guarantee

Each paper is composed from scratch, according to your instructions. It is then checked by our plagiarism-detection software. There is no gap where plagiarism could squeeze in.

Read more

Free-revision policy

Thanks to our free revisions, there is no way for you to be unsatisfied. We will work on your paper until you are completely happy with the result.

Read more

Privacy policy

Your email is safe, as we store it according to international data protection rules. Your bank details are secure, as we use only reliable payment systems.

Read more

Fair-cooperation guarantee

By sending us your money, you buy the service we provide. Check out our terms and conditions if you prefer business talks to be laid out in official language.

Read more