Ignored Vim swap files
Implemented pipwrite
Changed pipread and pipwrite return type to int in order to return the number of bytes read or written
Implemented pipread
Returned bytes written from pipwrite
Removed some unnecessary print statements
Fixed logic in pipread and pipwrite

Both were not signaling before restoring interrupts
pipread had incorrect copy and increment logic
Fixed bug in pipe semaphore initialization

The pipe's writer semaphore was initialized with a count of 1, which was preventing the wait call in pipwrite from blocking.
Fixed by initializing the count to 0.
Waited for process a and b to finish
Added TODOs regarding location of signal
Fixed logic when main waits on processes to finish

Semaphores were initialized to 1 instead of 0.
Implemented producer and consumer processes

Communication happens through a pipe.
Killed producer instead of waiting for completion
Reset pipe head and length after pipdisconnect
Used getpid() instead of currpid
Avoided signaling pipe reader/writer if no bytes were written/read
Implemented cleanup of pipe resources when owner is killed
Added README
Strengthened claim that pipe resources are released

Confirmed that pipe resources are released when owner is killed and changed the README to be more definitive.
Merge branch 'lab3'