A shell in C. It implements a subset of features of bash.
- Use Unix process API to create and manage processes.
- fork() to create a new create process
- execvp() to run a different program that is the user input command
- waitpid() to check for the termination of the child process, and clean up resources from child processes
- getpid() to get the process id
- getenv() to get environment variable
- Support input and output redirection using dup2() system call
- Switch between foreground-only and foreground-and-background
- Expand any instance of "$$" in a command into the process ID
- Implement custom handlers to override 2 signals, SIGINT and SIGTSTP
- Used valgrind to ensure memory-leak free