commit bd0c35186137941620ae65a91c6665cfbcc033db Author: Grannik Date: Tue Apr 22 13:55:14 2025 +0000 Загрузить файлы в «/» diff --git a/connection_module.c b/connection_module.c new file mode 100644 index 0000000..3329455 --- /dev/null +++ b/connection_module.c @@ -0,0 +1,71 @@ +#include + +// Объявляем функции модулей как слабые (weak), чтобы отсутствующие модули не ломали компиляцию +#define DECLARE_MODULE_RUN(num) extern int module_##num##_run() __attribute__((weak)) + +DECLARE_MODULE_RUN(00); +DECLARE_MODULE_RUN(01); +DECLARE_MODULE_RUN(02); +DECLARE_MODULE_RUN(03); +DECLARE_MODULE_RUN(04); +DECLARE_MODULE_RUN(05); +DECLARE_MODULE_RUN(06); +DECLARE_MODULE_RUN(07); +DECLARE_MODULE_RUN(08); +DECLARE_MODULE_RUN(09); +DECLARE_MODULE_RUN(10); +DECLARE_MODULE_RUN(11); +DECLARE_MODULE_RUN(12); +DECLARE_MODULE_RUN(13); +DECLARE_MODULE_RUN(14); +DECLARE_MODULE_RUN(15); +DECLARE_MODULE_RUN(16); +DECLARE_MODULE_RUN(17); +DECLARE_MODULE_RUN(18); +DECLARE_MODULE_RUN(19); +DECLARE_MODULE_RUN(20); +DECLARE_MODULE_RUN(21); +DECLARE_MODULE_RUN(22); +DECLARE_MODULE_RUN(23); +DECLARE_MODULE_RUN(24); +DECLARE_MODULE_RUN(25); +DECLARE_MODULE_RUN(26); +DECLARE_MODULE_RUN(27); +DECLARE_MODULE_RUN(28); +DECLARE_MODULE_RUN(29); +DECLARE_MODULE_RUN(30); +DECLARE_MODULE_RUN(31); +DECLARE_MODULE_RUN(32); +DECLARE_MODULE_RUN(33); +DECLARE_MODULE_RUN(34); +DECLARE_MODULE_RUN(35); + +int main() { + // Массив указателей на функции модулей + int (*module_runs[36])() = { + module_00_run, module_01_run, module_02_run, module_03_run, + module_04_run, module_05_run, module_06_run, module_07_run, + module_08_run, module_09_run, module_10_run, module_11_run, + module_12_run, module_13_run, module_14_run, module_15_run, + module_16_run, module_17_run, module_18_run, module_19_run, + module_20_run, module_21_run, module_22_run, module_23_run, + module_24_run, module_25_run, module_26_run, module_27_run, + module_28_run, module_29_run, module_30_run, module_31_run, + module_32_run, module_33_run, module_34_run, module_35_run + }; + + // Выполняем все модули последовательно + for (int i = 0; i < 35; i++) { + if (module_runs[i] != NULL) { + printf("Запуск модуля module_%02d\n", i); + int result = module_runs[i](); + if (result != 0) { + fprintf(stderr, "Модуль module_%02d завершился с ошибкой: %d\n", i, result); + } + } + } + + return 0; +} + +// gcc -o connection_module connection_module.c module_*.c diff --git a/module_00.c b/module_00.c new file mode 100644 index 0000000..eec763f --- /dev/null +++ b/module_00.c @@ -0,0 +1,3 @@ +int module_00_run() { + return 0; +} diff --git a/module_01.c b/module_01.c new file mode 100644 index 0000000..7b57da1 --- /dev/null +++ b/module_01.c @@ -0,0 +1,6 @@ +#include + +int module_01_run() { + printf(" Hello, world!\n"); + return 0; +} diff --git a/module_04.c b/module_04.c new file mode 100644 index 0000000..8145548 --- /dev/null +++ b/module_04.c @@ -0,0 +1,20 @@ +#include +#include // для usleep +#include // для strlen + +int module_04_run() { + const char *text = " Permission denied."; + const char *red = "\033[1;31m"; + const char *reset = "\033[0m"; + + printf("%s", red); // включаем красный + + for (size_t i = 0; i < strlen(text); i++) { + printf("%c", text[i]); + fflush(stdout); // выводим сразу + usleep(100000); // задержка 0.1 секунды + } + + printf("%s\n", reset); // сброс цвета и перенос строки + return 0; +} diff --git a/module_21.c b/module_21.c new file mode 100644 index 0000000..95c657c --- /dev/null +++ b/module_21.c @@ -0,0 +1,21 @@ +#include +#include + +int module_21_run() { + // Проверяем наличие файла README.md + FILE *file = fopen("README.md", "r"); + if (file == NULL) { + fprintf(stderr, "Ошибка: файл README.md не найден\n"); + return 1; + } + fclose(file); + + // Запускаем glow для отображения README.md + int result = system("glow README.md"); + if (result != 0) { + fprintf(stderr, "Ошибка: не удалось запустить glow (убедитесь, что glow установлен)\n"); + return 1; + } + + return 0; +}