As programmers, command-line interpreters, also known as shells, are an important and ubiquitous part of our lives. A command line interpreter (or command prompt, or shell) allows the execution of multiple user commands with a various number of arguments. The user inputs the commands one after another, and the commands are executed by the command line interpreter.
A shell is actually just another program implemented using the process-related system calls discussed in the lectures. In this lab, you are going to implement a simple shell with the following functionalities:
- Running commands in the foreground and background
- Chaining commands
- Redirecting input, output, and error streams
- Terminating commands
- Managing the processes launched by this shell
The main purpose of this lab is to familiarize you with:
- advanced aspects of C programming,
- system calls,
- process operations in Unix-based operating systems.