update README
This commit is contained in:
parent
48976fecd7
commit
0e0b72a0ca
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 сек.
|
||||
```
|
||||
Loading…
x
Reference in New Issue
Block a user