|
��������
signal - ������������ �������� �� ��������� �������
���������
#include <signal.h> void (*signal (sig, func)) ( ) int sig; void (*func) ( );
��������
��������� ����� signal ��������� ����������� ��������
������� ���� �� ���� ��������� �������� ������� �� ��������� ������������� �������. ��������� sig � func
�������������, ��������������, ������ � �����.
�������� sig ����� ����� ���� �� ��������� ��������, �� ����������� SIGKILL:
SIGHUP | 01 | ������������ ����� (hangup). | |
SIGINT | 02 | ���������� (interrupt). | |
SIGQUIT | 03 | [1] | ����� (quit). |
SIGILL | 04 | [1] | ������������ ������� (illegal instruction). �� ������������������� ��� ���������. |
SIGTRAP | 05 | [1] | �������������� ���������� (trace trap). �� ������������������� ��� ���������. |
SIGIOT | 06 | [1] | �������� ������� IOT. |
SIGABRT | 06 | [1] | ������������� ������� �����������. |
SIGEMT | 07 | [1] | �������� ������� EMT. |
SIGFPE | 08 | [1] | �������������� �������� ��� ���������� �������� � ������������� ������� (floating-point exception). |
SIGKILL | 09 | ����������� �������� (kill). �� ��������������� � �� ������������. | |
SIGBUS | 10 | [1] | ������ ���� (bus error). |
SIGSEGV | 11 | [1] | ������������ ��������� � �������� ������ (segmentation violation). |
SIGSYS | 12 | [1] | ������������ �������� ���������� ������ (bad argument to system call). |
SIGPIPE | 13 | ������ � �����, �� �������� ������ ������ (write on a pipe with no one to read it). | |
SIGALRM | 14 | ��������� (alarm clock). | |
SIGTERM | 15 | ����������� ������ ���������� (software termination signal). | |
SIGUSR1 | 16 | ������������ ������������� ������ 1 (user-defined signal 1). | |
SIGUSR2 | 17 | ������������ ������������� ������ 2 (user-defined signal 2). | |
SIGCLD | 18 | [2] | ���������� ������������ �������� (death of a child). |
SIGPWR | 19 | [2] | ������ ������� (power fail). |
SIGPOLL | 22 | [3] | ����������� ����������� ������� (selectable event pending). |
�������� func ����� ����� ���� �� ���� ��������: SIG_DFL, SIG_IGN ��� �����_�������. ������� SIG_DFL � SIG_IGN ���������� �� ���������� ����� <signal.h>. ������ �� �������� ��������� ���������� ��������� ���� "��������� �� ������� ���� void", �������� �� ��������������� ������������ �������.
��������, �������������� ���������� func, ������� � ���������:
����� ���������� ������� ��������� ������� �������, ���������� ������, ������������ ���������� � ����� ����������.
���� ������, ������� ������ ���� ����������, �������� �� ����� ���������� ��������� ������� read(2), write(2), open(2) ��� ioctl(2) ��� ��������� ��������� (�����, ��� ��������, �� �� �������� ����), pause(2) ��� ���������� ������ wait(2), ������� �� ���������� ���������� ���������� ��-�� ����, ��� ����������� ������� ���������� ��� ������������, �� ������� ��������� ������� �����������, � ����� ���������� ��������� �����, ������ �����, ���������� ����������� �������� �������� -1 � ����������� ���������� errno �������� EINTR.
��������� ����� signal �� ��������� ������������ ��������� func. ����������� ���������� ������� ��������� �������, �������� ������������ �������, ��������������.
������ SIGKILL ����������� ������.
���������� ���������� ������ signal �������� ����������, �� ��� �� ������������ ������ sig, ���� ������ ���� ������ �� ���� SIGKILL.
��������� ����� signal ����������� ��������, ����:
����������
[1]
[2]���� ��� ��������, ����������
[1], ����������� ����������� ������� (SIG_DFL), �� � ���������� � ����, ��� ������� �������������, � ������� ������� �������� ��������� ���� � ������� ������, ���� ����������� ��������� �������:
- ����������� � �������� �������������� ������������ ��������, ����������� ������, ���������.
- ������� ���� � ������ core ���������� � � ���� ����� ������, ��� ���� core ����� ���� ������; ����������� ���� core ����� �������� ���������� ����������������:
- ����� ������� 0666, ���������������� ������ ������ �������� ������ [��. umask(2)].
- ������������� ��������� ����� ����� ������������ �������������� ������������ ��������, ����������� ������.
- ������������� ������ ����� ����� ������������ �������������� ������ ��������, ����������� ������.
[3]��� �������� SIGCLD � SIGPWR, ��� � ��� ������, � �������� func ����� �������������� ���� �� ���� ��������: SIG_DFL, SIG_IGN ��� ����� ������� ��������� �������. ������ ��������, �������������� ����� ����������, ���������� �� ��������� ����:
SIG_DFL - ������������� �������
SIG_IGN - ������������� ����������� �������� sig ����� SIGCLD, �� ��������, ����������� ���������� ���������, �� �������� � ��������� ����� ��� ����� ���������� [��. exit(2)].
�����_������� - �������� �������
���� ������� ������ SIGCLD, �� �� ����� ���������� ������� ��������� ������� ����� ������ ������ SIGCLD ������������.������ SIGCLD ��������������� � ���������� �������� wait � exit ��������� �������:
- wait
- ���� �������� func ��� ������� SIGCLD ����������� ������ SIG_IGN � ����������� ��������� ����� wait, �� ����� ��������� ������� SIGCLD wait ����������� �� ���������� ���� ���������, ����������� ���������� ���������; ����� wait ���������� -1, � ���������� errno ������������� �������� ECHILD.
- exit
- ���� �������, ������������ �� ��������� � ��������, ������������ exit, ��������� ��� ������� SIGCLD �������� SIG_IGN, �� ������������� ������� �� ��������� � ��������� �����.
��� ������������� ��������� ������� ����� � ����, ��� ������������� ������ shell ������ ��������� ������� ��������� ������������ ��� �������������� ���������. �������, ������� ������ � �������� (� ����� ������� ����� ����� ������������ ���������), �� ������ ������������� ������ SIGCLD.
������ SIGPOLL ����������, ����� ��� ����������� �����, ���������������� ���������������� [��. intro(2)], ����������� ����������� ���������� �������. ������� ������ ���������� ����������� ������� ����� ������� ����������� ���������� ������ ioctl � ���������� I_SETSIG, ����� ������ SIGPOLL ������� �� ����� �������.
��. �����
intro(2), kill(2), pause(2), ptrace(2), wait(2),
setjmp(3C), sigset(2).
kill(1) � ����������� ������������.
�����������
��� �������� ���������� ���������� ������ signal ������������ ���������� �������� func ��� ���������� ������� sig. � ��������� ������ ������������ ��������
SIG_ERR, � ���������� errno ������������� ��� ������.
�������� SIG_ERR ���������� �� ���������� �����
<sys/signal.h>.
��������
��� ������� �������� ����������� ������� �� ������
SIGKILL ������������ �������� SIG_DFL (� �� SIG_ERR,
��� ������ ����), � ���������� errno �������� ��������
EINVAL.
|