Server for Information Technologies ������ ��������������
������� �������������� ����������
(095) 932-9212, 932-9213, 939-0783
E-mail: [email protected]
������ �������� ����(!) ������������� ���������� CIT Forum CD-ROM

SIGNAL(2)

��������
signal - ������������ �������� �� ��������� �������

���������

        #include <signal.h>
        
        void (*signal (sig, func)) ( )
        int sig;
        void (*func) ( );

��������
��������� ����� signal ��������� ����������� �������� ������� ���� �� ���� ��������� �������� ������� �� ��������� ������������� �������. ��������� sig � func �������������, ��������������, ������ � �����.

�������� sig ����� ����� ���� �� ��������� ��������, �� ����������� SIGKILL:
SIGHUP01������������ ����� (hangup).
SIGINT02���������� (interrupt).
SIGQUIT03[1]����� (quit).
SIGILL04[1]������������ ������� (illegal instruction). �� ������������������� ��� ���������.
SIGTRAP05[1]�������������� ���������� (trace trap). �� ������������������� ��� ���������.
SIGIOT06[1]�������� ������� IOT.
SIGABRT06[1]������������� ������� �����������.
SIGEMT07[1]�������� ������� EMT.
SIGFPE08[1]�������������� �������� ��� ���������� �������� � ������������� ������� (floating-point exception).
SIGKILL09����������� �������� (kill). �� ��������������� � �� ������������.
SIGBUS10[1]������ ���� (bus error).
SIGSEGV11[1]������������ ��������� � �������� ������ (segmentation violation).
SIGSYS12[1]������������ �������� ���������� ������ (bad argument to system call).
SIGPIPE13������ � �����, �� �������� ������ ������ (write on a pipe with no one to read it).
SIGALRM14��������� (alarm clock).
SIGTERM15����������� ������ ���������� (software termination signal).
SIGUSR116������������ ������������� ������ 1 (user-defined signal 1).
SIGUSR217������������ ������������� ������ 2 (user-defined signal 2).
SIGCLD18[2]���������� ������������ �������� (death of a child).
SIGPWR19[2]������ ������� (power fail).
SIGPOLL22[3]����������� ����������� ������� (selectable event pending).

�������� func ����� ����� ���� �� ���� ��������: SIG_DFL, SIG_IGN ��� �����_�������. ������� SIG_DFL � SIG_IGN ���������� �� ���������� ����� <signal.h>. ������ �� �������� ��������� ���������� ��������� ���� "��������� �� ������� ���� void", �������� �� ��������������� ������������ �������.

��������, �������������� ���������� func, ������� � ���������:

SIG_DFL - ����������� ������� �� ������
��� ��������� ������� sig ������������� ������� �� ����� ������������ ����������, ���������� � exit(2); ��. ��������� [1] ����.
SIG_IGN - ������������� �������
������������ ������ sig. ������ SIGKILL �� ����� ��������������.
�����_������� - �������� �������
��� ��������� ������� sig ��������� ������� ��������� ������� func; � �������� ������������� ��������� ������� func ���������� ����� ������� sig; �������������� ��������� ���������� ��� ��������, �������������� �����������. ����� ����������� ������� func ��������������� ����������� ������� �� ���������� ������, ���� ������ ���� ������ �� ���� SIGILL ��� SIGTRAP. ����� �������, ����� ����������� ��������� ������ sig, ����� ����� ���������� � signal, ����� � �������� ��������� func �����_�������.

����� ���������� ������� ��������� ������� �������, ���������� ������, ������������ ���������� � ����� ����������.

���� ������, ������� ������ ���� ����������, �������� �� ����� ���������� ��������� ������� read(2), write(2), open(2) ��� ioctl(2) ��� ��������� ��������� (�����, ��� ��������, �� �� �������� ����), pause(2) ��� ���������� ������ wait(2), ������� �� ���������� ���������� ���������� ��-�� ����, ��� ����������� ������� ���������� ��� ������������, �� ������� ��������� ������� �����������, � ����� ���������� ��������� �����, ������ �����, ���������� ����������� �������� �������� -1 � ����������� ���������� errno �������� EINTR.

��������� ����� signal �� ��������� ������������ ��������� func. ����������� ���������� ������� ��������� �������, �������� ������������ �������, ��������������.

������ SIGKILL ����������� ������.

���������� ���������� ������ signal �������� ����������, �� ��� �� ������������ ������ sig, ���� ������ ���� ������ �� ���� SIGKILL.

��������� ����� signal ����������� ��������, ����:

[EINVAL]
�������� ��������� sig �������� ������������ ������� �������, ������� SIGKILL.

����������
[1]

���� ��� ��������, ����������

[1], ����������� ����������� ������� (SIG_DFL), �� � ���������� � ����, ��� ������� �������������, � ������� ������� �������� ��������� ���� � ������� ������, ���� ����������� ��������� �������:
  1. ����������� � �������� �������������� ������������ ��������, ����������� ������, ���������.
  2. ������� ���� � ������ core ���������� � � ���� ����� ������, ��� ���� core ����� ���� ������; ����������� ���� core ����� �������� ���������� ����������������:
    1. ����� ������� 0666, ���������������� ������ ������ �������� ������ [��. umask(2)].
    2. ������������� ��������� ����� ����� ������������ �������������� ������������ ��������, ����������� ������.
    3. ������������� ������ ����� ����� ������������ �������������� ������ ��������, ����������� ������.
[2]

��� �������� 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.

[3]
������ 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.
Comments: [email protected]
Designed by Andrey Novikov
Copyright © CIT