ВУЗ:
Составители:
30
Использование отдельного стека сигнала
Стек сигнала – это специальный участок памяти, используемый как стек во
время вызова обработчика сигнала. Размер стека должен быть достаточно большим для
того, чтобы обезопаситься от переполнения. Стандартный размер стека сигнала для
Linux задается макросом SIGSTKSZ. Для выделения пространства может
использоваться функция malloc. Для описания стека используется следующая структура
sigaltstack. Она включает следующие поля:
void *ss_sp указатель на область данных стека;
size_t ss_size размер в байтах стека, на который указывает ss_sp. В Linux
определены два макроса, которые могут использоваться для
установки размера стека:
SIGSTKSZ – стандартное значение для стека сигнала,
достаточное для большинства операций;
MINSIGSTKSZ – минимальное значение размера,
необходимое операционной системе для вызова
обработчика.
int ss_flags поле может содержать битовую маску
следующих значений:
SS_DISABLE – система не должна использовать стек
сигнала;
SS_ONSTACK – устанавливается системой и
показывает, что в настоящий момент используется.
int sigaltstack(const struct sigaltstack *STACK,
const struct sigaltstack *OLDSTACK)
Функция указывает операционной системе на необходимость использования
альтернативного стека. Если OLDSTACK не является нулевым указателем, в этом
аргумент заносится информация о текущем стеке. Возвращает значение 0, если функция
выполнена успешно, -1 – в случае ошибки. В случае ошибки переменная errno может
принимать следующие значения:
EINVAL была попытка отключит стек, который в настоящее время используется;
ENOMEM размер альтернативного стека недостаточен для работы.
Использование отдельного стека сигнала
Стек сигнала – это специальный участок памяти, используемый как стек во
время вызова обработчика сигнала. Размер стека должен быть достаточно большим для
того, чтобы обезопаситься от переполнения. Стандартный размер стека сигнала для
Linux задается макросом SIGSTKSZ. Для выделения пространства может
использоваться функция malloc. Для описания стека используется следующая структура
sigaltstack. Она включает следующие поля:
void *ss_sp указатель на область данных стека;
size_t ss_size размер в байтах стека, на который указывает ss_sp. В Linux
определены два макроса, которые могут использоваться для
установки размера стека:
SIGSTKSZ – стандартное значение для стека сигнала,
достаточное для большинства операций;
MINSIGSTKSZ – минимальное значение размера,
необходимое операционной системе для вызова
обработчика.
int ss_flags поле может содержать битовую маску
следующих значений:
SS_DISABLE – система не должна использовать стек
сигнала;
SS_ONSTACK – устанавливается системой и
показывает, что в настоящий момент используется.
int sigaltstack(const struct sigaltstack *STACK,
const struct sigaltstack *OLDSTACK)
Функция указывает операционной системе на необходимость использования
альтернативного стека. Если OLDSTACK не является нулевым указателем, в этом
аргумент заносится информация о текущем стеке. Возвращает значение 0, если функция
выполнена успешно, -1 – в случае ошибки. В случае ошибки переменная errno может
принимать следующие значения:
EINVAL была попытка отключит стек, который в настоящее время используется;
ENOMEM размер альтернативного стека недостаточен для работы.
30
Страницы
- « первая
- ‹ предыдущая
- …
- 28
- 29
- 30
- 31
- 32
- …
- следующая ›
- последняя »
