Files
system-programming/exercises/README.md
2025-08-21 22:39:59 +02:00

86 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🗂️ Exercise Index Linux System Programming
This is an organized list of all exercises completed so far, including a brief description and links to related resources or files.
---
## 📁 mycp
**Description**: A simple file copy utility implemented in C using low-level system calls (`open`, `read`, `write`, `close`).
- 📄 [README](mycp/README.md)
- 📂 Directory: `mycp/`
- ✅ Features:
- Error handling via `perror` and `errno`
- Safe loop with `EINTR` handling
- Proper resource cleanup
- Integrated unit tests and Valgrind checks
---
## 🌳 tree
**Description**: A basic reimplementation of the Unix `tree` utility that recursively lists directories and files.
- 📄 [README](tree/README.md)
- 📂 Directory: `tree/`
- ✅ Features:
- Recursive traversal using `opendir` and `readdir`
- Directory depth display
- Unit tests with mocks for directory structure
- Scripted test automation with Valgrind integration
---
## 🐚 run_scripts
**Description**: A simple C program that sequentially executes one or more bash scripts, printing each scripts exit status.
- 📄 [README](run_scripts/README.md)
- 📂 Directory: `run_scripts/`
- ✅ Features:
- Uses `fork()` and `execlp()` to run each script in a child process
- Waits for each child to finish before executing the next
- Reports normal exit code or termination by signal
- Includes example test scripts and memory checks with Valgrind
- Makefile with targets: `build`, `run`, `test`, `valgrind`, and `clean`
---
## 📥 downloader
**Description**: A multi-threaded simulated file downloader implemented in C using POSIX threads (pthreads).
- 📄 [README](downloader/README.md)
- 📂 Directory: `downloader/`
- ✅ Features:
- Each thread simulates downloading a file by printing periodic progress updates
- Synchronization using `pthread` APIs
- Demonstrates creation, execution, and joining of threads
- Makefile included with standard targets
---
## 🧠 memory_analyzer
**Description**: A simple memory analyzer that allocates memory blocks of different sizes and prints current memory usage.
- 📄 [README](mem_analyzer/README.md)
- 📂 Directory: `mem_analyzer/`
- ✅ Features:
- Allocates blocks using `malloc` and frees them after measurement
- Reports current memory usage via `/proc/self/status`
- Minimal implementation aligned with the exercise objectives
- Makefile included with standard targets
---
## 🔧 Tooling & Automation
**Shared tools and scripts used across projects**:
- `Makefile` with:
- Targets for `build`, `test`, `valgrind`, and `clean`
- Shell script for automated tests: `run_tests.sh`
- Valgrind memory check reports generated automatically