Implement a shell in C.
make
./shell
Sets home directory and creates a copy of itself which runs the shell
Displays the shell prompt(<user_name@system_name:curr_dir_path>) and checks if a back-ground process has been completed
Interprets the input command, it parses the line entered into different commands on the basis of semicolons and then into different arguments based on spaces and calls appropriate functions; also changes input/output stream as required to implement piping and redirection; attaches signal handlers for SIGINT, SIGSTOP, SIGTTOU; creats and maintains a job list for background process and manges the current foreground process group as well
Implements cd command
Implements ls command Accepted flags: -l, -a
Implements pinfo command in the shell syntax : pinfo <num(pid)>
Implements pwd
Implements echo
Implemetns history and allows 'up' to use its database to get the last kth command maximum commands stored = 20, maximum commands displayed = 10 syntax : history <num(between 1 to 10)>
Implements setenv command usage : setenv var [val]
Implements unsetenv command usage : unsetenc var1 var2 .. varN
Implements jobs command which displays all background process
Implements kjob command usage : kjob [job number] [signal number]
Implements fg command to bring a running / stopped background process to foreground(and runs it using SIGCONT in case it was stopped)
Implements bg command to continue a stopped background process
Implements overkill commands which kills all background process
Implemnts the quit command which serves as the only way to exit the shell; all other signals (ctrlC, ctrlZ, ctrl/, SIGTERM) are discarded
Implements cronjob commands usage : cronjob -c [command] -t [time periiod] -p [total time]
A header file containing global functions and variables