When first called jobCommander Creates a jobExecutorServer. Job Commander then communicates with the Server through a named pipe using signals and semaphores. The Server executes jobs using fork-exec and Stores the jobs waiting to be executed in a FIFO. JobCommander can ask the server for the running|queued processes.
./jobCommander [OPTION] [ARGUMENT]
issuejob [Job]: issue a job
setConcurrency [int]: Set How many processes can run Concurrently
poll [running | waiting]: Show running processes or processes waiting to be executed
stop [Pid]: Stop an issued Job
exit: Stop jobCommander and kill all running processes
- allJobsStop.sh
Bash script that recieves all processes running by jobCommander and then using JobCommader again it kills them
- multijob.sh
Bash script that issues JobCommander to execute every job written in a file passed as an argument (Commands.txt)
- MemSemHandle.h/MemSemHandle.c
All functions necessary by semaphores
- queue.c/queue.h
Implemetation of fifo queue
- jobCommander.c
Job Commander implementation
- rmsem.sh
Community bash script, deleting all semaphores in case of a unhealthy program termination