/537-proj1

CS 537 Programming Assignment 1 (Fall 2020). Clone of the linux `ps` command.

Primary LanguageC

CS 537 Programming Assignment 1 (Fall 2020)
Michael Noguera (noguera@cs.wisc.edu) and Julien de Castelnau (de-castelnau@cs.wisc.edu)
due 9/23/2020 at 5pm

== BUILDING ==

To build 537ps , simply run "make" at the root of this directory. If you specify the DEBUG 
environment variable as "true" or use "make DEBUG=true", debug symbols will be included in the 
executable as well.

Use "make clean" to get rid of object files and executables.

== USAGE ==

When run with no flags (i.e "./537ps"), 537ps outputs the list of all processes owned by the
calling user. The following flags are recognized by 537ps:
[-p <pid>] [-s] [-U] [-S] [-v] [-c] [-m <addr> <len>]
Multiple "-p <pid>" instances can be specified to list multiple processes. 
Note that for "-m", exactly one PID must be specified. If none or multiple PIDs are specified, 
an error will be thrown.


== PROJECT STRUCTURE == 

The functionality of our 537ps is divided into three logical modules, which serve the following 
tasks:

1. main: Parses command-line options and handles printing of output for the corresponding flags.
2. proc: Provides an interface over the /proc filesystem and exposes functions for getting
         process information.
3. linkedlist: Defines a linkedlist data structure and the related functions that operate on it,
         to store PIDs.