| lab5/part1 | mdb-lookup-server over netcat | fork, exec, pipes, FIFOs, process trees, dup2 | Turns a terminal program into a network service without writing any socket code: a named pipe plus netcat plus mdb-lookup, wired together with fork and exec. Two variants, one driving a shell script and one running several servers at once. |
| deploy/http-server | hardening the lab server for the public internet | fork per connection, SIGCHLD, alarm, SO_RCVTIMEO, load shedding | The lab version handled one connection at a time, so a single idle client froze everyone. This build forks per connection, reaps children, caps concurrency, and times out slow requests. Also fixes an out-of-bounds write reachable by sending a bare CRLF. |
| deploy/projdb-server | projdb-server: the database behind this search | fork, preloaded linked list, case-insensitive search, loopback bind | Speaks the same one-line protocol as lab6 so http-server needed no changes to talk to it. Loads this text file once at startup instead of per connection, does not truncate search keys to five characters, and binds to loopback only. |
| concepts/processes | process control thread | fork, exec, wait, waitpid, pipes, signals, zombies | Starts with wiring processes together through pipes in lab5 and ends with a forking server that has to reap its own children. SIGCHLD handling is the difference between a server that runs for a week and one that fills the process table. |
| portfolio/http-server | HTTP Server in C | sockets, fork, linked lists, HTTP/1.0, Cloudflare tunnel | An iterative TCP server on the raw socket API, serving static files and records from a database also written in C. The write-up you are reading is served by it. |