update README

This commit is contained in:
gandc 2025-04-06 19:02:10 +03:00
parent 48976fecd7
commit 0e0b72a0ca
Signed by: gandc
GPG Key ID: 9F77B03D43C42CB4

104
README.md
View File

@ -0,0 +1,104 @@
# Игра «Угадай число» с межпроцессным взаимодействием
## Описание проекта
Данный проект реализует межпроцессное взаимодействие в операционной системе 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()`.
## 🛠 Компиляция и сборка проекта
Для компиляции используйте команду:
```bash
make
```
Для компиляции отдельных заданий:
```bash
make signals
make pipe
```
или
```bash
make pipe
```
## 🚀 Запуск программ
### ▶️ Решение с помощью сигналов:
```bash
./guess_signals N
```
### Пример запуска:
```bash
./guess_signals 100
```
---
### ▶️ Решение с помощью неименованных каналов:
```bash
./guess_pipe N
```
### Пример запуска:
```bash
./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 сек.
```