update README
This commit is contained in:
104
README.md
104
README.md
@@ -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 сек.
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user