A UNIX-style shell project built in C with both a local shell and a TCP-based remote shell. The codebase also includes a scheduler-driven execution path for long-running demo programs, live state logging, and a standalone scheduler test harness.
- Local shell executable:
myshell - Remote shell server and client:
serverandclient - Task scheduling support for program execution
- Preemption and re-queueing for long-running tasks
- Live demo progress updates for
./demo N - Colored task-state output in the server logs
- Gantt-style execution summary for preempted workloads
- Standalone scheduler test binary:
scheduler_test
src/main.c— entry point for the local shellsrc/client.c— remote shell clientsrc/server.c— remote shell server and task execution logicsrc/scheduler.c— task scheduling coresrc/scheduler_test.c— scheduler test harnesssrc/demo.c— long-running demo programinclude/— project headers
Build everything with:
make clean && make allThis produces:
myshellclientserverscheduler_testdemo
Start the local shell:
./myshellStart the server in one terminal:
./serverStart the client in another terminal (multiple clients can be started in multiple terminals):
./clientExample commands inside the client:
pwd
ls -l
./demo 3
exit
./demo N runs for N one-second iterations and is used to show scheduling behavior and real-time progress updates.
Example:
./demo 5
The standalone scheduler test can be run with:
./scheduler_testIt exercises the task queue, dispatch logic, preemption, and re-queueing behavior without needing the full client/server flow.
- The server prints colored task-state logs for easier reading.
- The execution summary includes a Gantt-style timeline when preemption occurs.
- Output files such as
output.txtanderror.logmay be created depending on the commands you run. - Use
exitin the client to close the remote session cleanly.
- A C compiler
- POSIX-compatible environment
- Standard build tools such as
make
No explicit license has been provided.