Skip to content

Commit 484affa

Browse files
committed
Adds Russian description (readme).
1 parent 98b39d6 commit 484affa

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

README_rus.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# Ctrl+C
2+
3+
Кроссплатформенный код (C++11) для обработки события Ctrl+C в пользовательских функциях.
4+
Поддерживаются Windows, Linux и Mac OS X.
5+
6+
## Использование
7+
8+
Для обработки события/сигнала Ctrl+C следует вызвать функцию:
9+
```cpp
10+
unsigned int CtrlCLibrary::SetCtrlCHandler(std::function<bool(enum CtrlCLibrary::CtrlSignal)> handler);
11+
```
12+
где handler - пользовательская функция;
13+
14+
**Возвращаемое значение**:
15+
Возвращается идентификатор добавленного обработчика. В случае ошибки возвращается CtrlCLibrary::kErrorID.
16+
17+
Для удаления обработчика следует вызвать функцию:
18+
```cpp
19+
void CtrlCLibrary::ResetCtrlCHandler(unsigned int id);
20+
```
21+
где id - идентификатор обработчика, возвращённый функцией CtrlCLibrary::SetCtrlCHandler.
22+
23+
### Установка
24+
25+
Скопируйте файлы с кодом (src/ctrl-c.h, src/ctrl-c.cpp) в свой проект.
26+
27+
## Пример использования
28+
29+
Файл test/main.cpp показывает использование обработчика Ctrl+C.
30+
Скомпилируйте этот код своим любимыми компилятором.
31+
32+
## Автор
33+
34+
**Евгений Кислов** - [evgenykislov.com](https://evgenykislov.com), [github/evgenykislov](https://github.com/evgenykislov)
35+
36+
## Лицензия
37+
38+
Проект лицензирован под MIT License. Подробнее см. файл [LICENSE](LICENSE)
39+
40+
## Примечания
41+
42+
Допускается добавлять несколько обработчиков события Cntl+C. Все обработчики будут вызываны в обратном порядке (LIFO): первый добавленный обработчик будет вызван последним.
43+
Каждый обработчик должен вернуть значение bool:
44+
* *true* - остановить обработку и не вызывать последующие обработчики;
45+
* *false* - продолжить обработку сигнала другими (следующими в очереди) обработчиками (дополнительно, см. примечания для Windows ниже).
46+
47+
Функции установки и сброса обработчика, а также сам обработчик являются потокобезопасными. *Внимание*: Не следует удалять обработчик события в самом обработчике события - это может вызвать блокироку (deadlock).
48+
49+
#### Ошибки
50+
Добавление нового обработчика может вернуть ошибку (kErrorID) в случае недостатка памяти или системной ошибки.
51+
52+
#### Исключения
53+
Код обрабатывает свои ошибки, а также ошибки выделения памяти в вызове SetCtrlCHandler. В этом случае возвращается идентификатор (kErrorID).
54+
Другие исключения не обрабатываются, следует их ловить (и обрабатывать) в своём коде.
55+
56+
#### Примечания для Linux и Mac OS X
57+
Установка любого обработчика приведёт к тому, что предыдущий обработчик перестанет работать. Если первое добавление обработчика возвратит ошибку, то предыдущий обработчик также перестанет работать - ОС будет вызывать обработчик по-умолчанию.
58+
Удаление всех обработчиков приведёт к установке обработчика Ctrl+C по-умолчанию.
59+
60+
#### Примечания для Windows
61+
Если все обработчики вернут **false**, то будет вызван предыдущий обработчик. Это может быть обработчик самой ОС и в этом случае процесс может быть закрыт.

0 commit comments

Comments
 (0)