BigShell: Unix shell in C

Data

What

The BigShell project involved creating a Unix-based shell in C that supported job control, signal handling, and process management. The shell allowed users to execute foreground and background processes, manage jobs, and handle system signals like SIGINT and SIGTSTP.

priority queue

How

BigShell was implemented in C using system calls such as fork(), execvp(), and waitpid() for process creation and management. Job control utilized a data structure to track running jobs and their statuses. Signal handlers for SIGCHLD, SIGINT, and SIGTSTP ensured proper cleanup, suspension, or termination of processes.

rehash function

Reflection

This project provided hands-on experience with Unix process management and signal handling. Challenges included handling race conditions in job control and properly terminating zombie processes. Future improvements could involve extending the shell to support more built-in commands or run more efficiently.