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
.
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.
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.