Игра «Угадай число» с межпроцессным взаимодействием
Описание проекта
Данный проект реализует межпроцессное взаимодействие в операционной системе Linux на языке C на примере игры «Угадай число».
В игре участвуют два процесса, созданных с помощью системного вызова fork():
- Первый процесс загадывает число от 1 до N и сообщает об этом второму процессу.
- Второй процесс пытается угадать число, перебирая варианты от 1 и выше.
- После того как число угадано, на экран выводится статистика игры:
- Количество попыток
- Затраченное время
- Затем процессы меняются ролями, и игра начинается заново. Всего проводится не менее 10 раундов.
📂 Структура проекта
.
├── Makefile
├── guess_signals.c // Решение с помощью сигналов
├── guess_pipe.c // Решение с помощью неименованных каналов (pipe)
├── .gitignore
└── README.md
🚩 Особенности реализации
✅ Задание 1: Используются стандартные и real-time сигналы для взаимодействия.
- Передача чисел — real-time сигналы (
SIGRTMIN). - Уведомление о результате:
SIGUSR1— число угаданоSIGUSR2— число не угадано
✅ Задание 2: Используются неименованные каналы (pipe) для межпроцессного взаимодействия.
- Два канала:
- Из родительского процесса к дочернему
- Из дочернего процесса к родительскому
- Процессы обмениваются сообщениями и синхронизируются без использования
sleep().
🛠 Компиляция и сборка проекта
Для компиляции используйте команду:
make
Для компиляции отдельных заданий:
make signals
make pipe
или
make pipe
🚀 Запуск программ
▶️ Решение с помощью сигналов:
./guess_signals N
Пример запуска:
./guess_signals 100
▶️ Решение с помощью неименованных каналов:
./guess_pipe N
Пример запуска:
./guess_pipe 100
📌 Пример вывода программы:
Раунд 1: Процесс 2356 (ЗАГАДЫВАЮЩИЙ) загадывает число.
Раунд 1: Процесс 2357 (УГАДЫВАЮЩИЙ) начинает угадывать.
Раунд 1: Процесс 2357 (УГАДЫВАЮЩИЙ) отправил догадку: 1
Раунд 1: Процесс 2356 (ЗАГАДЫВАЮЩИЙ) получил догадку: 1
Раунд 1: Процесс 2357 (УГАДЫВАЮЩИЙ) отправил догадку: 2
Раунд 1: Процесс 2356 (ЗАГАДЫВАЮЩИЙ) получил догадку: 2
...
Раунд 1: Процесс 2357 (УГАДЫВАЮЩИЙ) получил верный ответ для догадки 42.
Раунд 1: Процесс 2357 (УГАДЫВАЮЩИЙ) завершил раунд. Попыток: 42, время: 0.002 сек.
Description
Languages
C
98.1%
Makefile
1.9%

