Writing a unix shell is a great way to familiarize with the concepts of process control and signaling.
As part of 15213 (introduction to computer systems), I implemented a shell with the following features:
- quit, fg, bg and jobs built-in commands.
- use of & (foreground / background jobs).
- catch SIGCHILD, SIGINT and SIGSTOP signals.