Skip to content

Shell program that contains a job history, can spawn background jobs, and change directories. Utilizes the Buddy System algorithm to manage memory.

Notifications You must be signed in to change notification settings

thomascampbelladams/dash

Repository files navigation

Thomas Campbell-Adams
12/9/2011

To compile:
* dash: simply type make
* buddySystem: The test functions will need to be uncommented, as well as the main function. After that, type make buddySystem
* buddy-test: make buddy-test
* TestList: make TestList. The executable will be named tl

Files Included and Purpose:
command.c     -- Contains all the functions needed to parse commands sent to the shell
command.h     |
common.h      -- Contains common types and includes
error.c       -- Contains functions used to output fork errors
Job.c         -- Contains functions related to storing background process information in an object
Job.h         |
keyBindings.c -- Contains functions used to bind keys in order to have the up and down arrow keys work to browse the history
keyBindings.h |
List.c        -- Contains functions used to create and use a doubly linked list
List.h        |
Makefile      -- Makefile for the project
Node.c        -- Contains functions related to storing links and data of a node in the list
Node.h        |
ourhdr.h      -- Contains common includes for shell projects
shell1.c      -- Contains the main function of the program
shellUtil.c   -- Contains all the functionality related to internal commands used in the shell
shellUtil.h   |
signals.c     -- Contains all the functions related to subscribing and unsubscribing to events, and sending events to other processes
signals.h     |
loop.c        -- Test program for the dash
buddySystem.c -- Functions related to the buddy system for allocating memory.
buddySystem.h |
buddy-test.c  -- Program to test the buddy system implementation
docs          -- doxygen documentation for all files in this assignment.

Design:
All related functions are grouped into seperate files as described above.
Most functions use verbose names that describe what the function's purpose is.

Testing:
All tests and their intended results are located in TESTS.txt

Features:
* Ability to run tasks, run background tasks, and keep track of background processes
* Ability to set a custom prompt
* Ability to handle EOFs
* Ability to change directories
* Ability to manage background and foreground jobs
* The dash will make use of it's own memory management when using it's own internal functions.

Bugs:
* Job statuses don't update until the user enters an empty command

Parts of the assignment attempted:
* The buddy system was pretty much all I had time to implement for this project. I did not get a chance to fully
implement the piping in the shell.

About

Shell program that contains a job history, can spawn background jobs, and change directories. Utilizes the Buddy System algorithm to manage memory.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published