SCR - Real-Time Systems
Project 1: Signal-Driven Logging Library A C/C++ library providing a system state logging mechanism controlled via signals, fully compliant with POSIX standards.
- Real-Time Signal Control: Driven by RT signals, utilizing payload data transmitted with the signals.
- Asynchronous Execution: Signal handling is implemented via asynchronous code execution to ensure non-blocking operation.
- Dynamic State Dumps: A specific control signal triggers a dump of the application's internal state to a separate file. The content is application-dependent and fully configurable. Each signal occurrence generates a unique dump file.
- Logging Toggle: A second signal allows for enabling or disabling event logging to the log file on the fly.
- Verbosity Levels: A third signal enables switching between three logging verbosity levels: MIN, STANDARD, and MAX.
Project 2: Task Scheduler (Cron Equivalent) A task scheduling program serving as a functional equivalent to the Unix cron utility, compliant with POSIX and C/C++ standards.
- Interval Timers: Core logic is based on high-precision POSIX interval timers.
- CLI Control: Program operation and task management are handled entirely through command-line arguments.
- Single-Instance Mechanism: Only one instance of the service can run at a time. The initial execution starts the server, while subsequent executions act as clients.
- Inter-Process Communication (IPC): Client-server communication is implemented using the Message Queue mechanism.
- Flexible Scheduling: Supports task scheduling using:
- Relative time (e.g., in 5 minutes),
- Absolute time (at a specific hour),
- Cyclic intervals (recurring tasks).
- Command Support: Enables scheduled execution of external programs with their own command-line arguments.
- Task Management: Provides functionality to display a list of all scheduled tasks and the ability to cancel any selected task.
- Safe Shutdown: Terminating the server automatically cancels or completes all currently scheduled tasks.