ΠΠΌΠ΅Π½Π° ΡΠΈΠ³Π½Π°Π»ΠΎΠ² Π·Π°Π΄Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° signal.h. ΠΠ½ΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠ° SIG ΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π² ΡΠ°Π±Π». 11.3 ΡΠΈΠ³Π½Π°Π»Ρ.
Π’Π°Π±Π»ΠΈΡΠ° 11.3
ΠΠΌΡ ΡΠΈΠ³Π½Π°Π»Π° ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ SIGABORT *ΠΡΠΎΡΠ΅ΡΡ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ SIGALRM Π‘ΠΈΠ³Π½Π°Π» ΡΡΠ΅Π²ΠΎΠ³ΠΈ SIGFPE *ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ SIGHUP ΠΠ΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΉ ΠΎΡΡΠ°Π½ΠΎΠ² ΠΈΠ»ΠΈ ΡΠ°Π·ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ SIGILL *ΠΠ΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° SIGINT ΠΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° SIGKILL Π£Π½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠ΅ (Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ΅Π½ ΠΈΠ»ΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½) SIGPIPE ΠΠ°ΠΏΠΈΡΡ Π² ΠΊΠ°Π½Π°Π» Π±Π΅Π· ΡΡΠΈΡΡΠ²Π°ΡΠ΅Π»Ρ SIGQUIT ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° SIGSEGV *ΠΠ΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅Π³ΠΌΠ΅Π½ΡΡ ΠΏΠ°ΠΌΡΡΠΈ SIGTERM ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅, Π²ΡΡ ΠΎΠ΄ SIGUSR1 Π‘ΠΈΠ³Π½Π°Π» 1, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ SIGUSR2 Π‘ΠΈΠ³Π½Π°Π» 2, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ*ΠΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π·Π°Π²ΠΈΡΡΡΠΈΠ΅ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΡΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠΈΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² Π±Π΅Π· ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΠΊ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡ, ΠΏΡΠΎΡΠ΅ΡΡ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½. ΠΠ±ΡΡΠ½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ°ΠΉΠ» Ρ Π΄Π°ΠΌΠΏΠΎΠΌ ΡΠ΄ΡΠ°. ΠΡΠΎΡ ΡΠ°ΠΉΠ» Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, Π½Π°Π·Π²Π°Π½Π½ΡΠΉ core, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±ΡΠ°Π· ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΠΏΡΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅.
Π Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΡΠΈΠ³Π½Π°Π»Ρ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π² ΡΠ°Π±Π». 11.4.
Π’Π°Π±Π»ΠΈΡΠ° 11.4
ΠΠΌΡ ΡΠΈΠ³Π½Π°Π»Π° ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ SIGCHLD ΠΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΈΠ»ΠΈ Π·Π°Π²Π΅ΡΡΠΈΠ»ΡΡ SIGCONT ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ Π±ΡΠ» ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ SIGSTOP ΠΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ (Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Ρ Π²Π°ΡΡΠ²Π°ΡΡΡΡ ΠΈΠ»ΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡΡΡ) SIGTSTP Π‘ΠΈΠ³Π½Π°Π» ΠΎΡΡΠ°Π½ΠΎΠ²Π°, ΠΏΠΎΡΡΠ»Π°Π΅ΠΌΡΠΉ Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° SIGTTIN Π€ΠΎΠ½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΡΠ°Π΅ΡΡΡ ΡΠΈΡΠ°ΡΡ SIGTTOU Π€ΠΎΠ½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΈΡΠ°ΡΡΠ‘ΠΈΠ³Π½Π°Π» SIGCHLD ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ½ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ. ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΠ³Π½Π°Π»Ρ Π·Π°ΡΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠΈΠ΅ ΠΈΡ , ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠ³Π½Π°Π»Π° SIGCONT, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠ½ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΠΈ ΡΠ΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ .
Π§ΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΠ΅ΡΠ²ΡΡ Π³ΡΡΠΏΠΏΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ². ΠΠΎΠΊΠ° ΠΆΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·Π½Π°ΡΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ, Π²Π²ΠΎΠ΄ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ (ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΡ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡ <Ctrl>+<C>) Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ ΡΠΈΠ³Π½Π°Π»Π° SIGINT ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ, Ρ.Π΅. ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅ΠΉΡΡ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΡΠΎ Π²ΡΠ·ΠΎΠ²Π΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π΅ΡΠ»ΠΈ Π² Π½Π΅ΠΉ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ ΠΏΠ΅ΡΠ΅Ρ Π²Π°Ρ ΡΠΈΠ³Π½Π°Π»Π°,
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΈΠ³Π½Π°Π» Π½Π΅ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅, Π° Π΄ΡΡΠ³ΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ kill. ΠΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈΠΌΡ ΡΠΈΠ³Π½Π°Π»Π° ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ ΠΈ PID (ΠΊΠΎΡΠΎΡΡΠΉ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ps). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΈΠ³Π½Π°Π»Π° "ΠΎΡΡΠ°Π½ΠΎΠ² ΠΈΠ»ΠΈ ΡΠ°Π·ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅" ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅ΠΉΡΡ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ Ρ PID 512, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
$ kill -HUP 512
Π£Π΄ΠΎΠ±Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ kill β ΠΊΠΎΠΌΠ°Π½Π΄Π° killall, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΈΠ³Π½Π°Π» Π²ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΠ΅ Π²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ UNIX ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΅Π΅, Π½ΠΎ ΠΠ‘ Linux, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ. ΠΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅ PID ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΈΠ³Π½Π°Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΠ°Π·Π½ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΌ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΠ±ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ β Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ inetd ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
$ killall -HUP inetd
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΈΠ³Π½Π°Π»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ signal.
#include <signal.h>
void (*signal(int sig, void (*func)(int)))(int);
ΠΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ signal β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ°Ρ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, sig ΠΈ func. Π‘ΠΈΠ³Π½Π°Π», ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠΈΡΡ ΠΈΠ»ΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ, Π·Π°Π΄Π°Π΅ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ sig. Π€ΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ func. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠΈΠΏΠ° int (ΠΏΡΠΈΠ½ΡΡΡΠΉ ΡΠΈΠ³Π½Π°Π») ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ void. Π€ΡΠ½ΠΊΡΠΈΡ ΡΠΈΠ³Π½Π°Π»Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΈΠ³Π½Π°Π»Π°, ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΄Π²ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ:
β‘ SIG_IGN β ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠ³Π½Π°Π»;
β‘ SIG_DFL β Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ ΡΠ΄Π΅Π»Π°Π΅Ρ Π²ΡΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ. Π ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠΈ 11.7 Π²Ρ Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ctrlc.c, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΅Π°Π³ΠΈΡΡΠ΅Ρ Π½Π° Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡ <Ctrl>+<C> Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ Π½Π°ΠΆΠ°ΡΠΈΠ΅ <Ctrl>+<C> Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 11.7. ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΈΠ³Π½Π°Π»Π°Π€ΡΠ½ΠΊΡΠΈΡ ouch ΡΠ΅Π°Π³ΠΈΡΡΠ΅Ρ Π½Π° ΡΠΈΠ³Π½Π°Π», ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠΉ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ sig. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΡΠΈΠ³Π½Π°Π». ΠΠ½Π° Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΡΠ΅ΠΌ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΈΠ³Π½Π°Π»Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΡΠΈΠ³Π½Π°Π»Π° SIGINT (Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡ <Ctrl>+<C>).
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
void ouch(int sig) {
printf("OUCH! - I got signal %d\n", sig);
(void)signal(SIGINT, SIG_DFL);
}
Π€ΡΠ½ΠΊΡΠΈΡ main Π΄ΠΎΠ»ΠΆΠ½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΡΠΈΠ³Π½Π°Π»ΠΎΠΌ SIGINT, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΠΌ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡ <Ctrl>+<C>. Π ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ½Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅, Π²ΡΠ²ΠΎΠ΄Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
int main() {
(void)signal(SIGINT, ouch);
while(1) {
printf("Hello World!\n");
sleep(1);
}
}
ΠΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡ <Ctrl>+<C> (ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ^C Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π΄Π°Π»Π΅Π΅ Π²ΡΠ²ΠΎΠ΄Π΅) Π² ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π· Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΡΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡΡΡ. ΠΠΎΠ³Π΄Π° Π²Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΡΠ΅ <Ctrl>+<C> ΡΠ½ΠΎΠ²Π°, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ, Ρ.ΠΊ. ΡΠΈΠ³Π½Π°Π» SIGINT Π²Π΅ΡΠ½ΡΠ» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π·Π°ΡΡΠ°Π²Π»ΡΡΡΠ΅Π΅ Π΅Π΅ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ.
$ ./ctrlcl
Hello World!
Hello World!
Hello World!
Hello World!
^C
OUCH! - I got signal 2
Hello World!
Hello World!
Hello World!
Hello World!
^C
$
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΈΠ³Π½Π°Π»Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ β Π½ΠΎΠΌΠ΅Ρ ΡΠΈΠ³Π½Π°Π»Π°, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΠΉ ΠΊ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ΄Π½Π° ΠΈ ΡΠ° ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ². Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ SIGINT, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π² ΡΡΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ°Π²Π½ΡΠΌ 2. ΠΠ΅ ΡΡΠΎΠΈΡ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ², Π² Π½ΠΎΠ²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΡΠΈΠ³Π½Π°Π»ΠΎΠ².
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ΠΡΠ·ΡΠ²Π°ΡΡ ΠΈΠ· ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΈΠ³Π½Π°Π»Π° Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, printf, Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ. Π£Π΄ΠΎΠ±Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π°Π³, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΠΉ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΈΠ³Π½Π°Π»Π°, ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΡΠΎΡ ΡΠ»Π°Π³ Π² ΡΡΠ½ΠΊΡΠΈΠΈ main ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ. Π ΠΊΠΎΠ½ΡΠ΅ ΡΡΠΎΠΉ Π³Π»Π°Π²Ρ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π² ΡΠ΅Π»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠΈΠ³Π½Π°Π»ΠΎΠ².
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΡΡΠΎΠ΅Π½Π° ΡΠ°ΠΊ, ΡΡΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π·Π°Π΄Π°Π΅ΡΠ΅ ΡΠΈΠ³Π½Π°Π» SIGINT, Π½Π°ΠΆΠΈΠΌΠ°Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ <Ctrl>+<C>, Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ouch. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ouch Π·Π°Π²Π΅ΡΡΠΈΡΡΡ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ, Π½ΠΎ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ΅Π°ΠΊΡΠΈΡ Π½Π° ΡΠΈΠ³Π½Π°Π», ΠΏΡΠΈΠ½ΡΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. (Π£ ΡΠ°Π·Π½ΡΡ Π²Π΅ΡΡΠΈΠΉ UNIX, Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Ρ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΡ Berkeley UNIX, Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ Π»Π΅Ρ ΡΠ»ΠΎΠΆΠΈΠ»ΠΎΡΡ ΡΠ°Π·Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠΈΠ³Π½Π°Π»ΠΎΠ². ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΡΠΈΠ³Π½Π°Π»Π°, Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.) ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π²ΡΠΎΡΠΎΠΉ ΡΠΈΠ³Π½Π°Π» SIGINT, ΠΎΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠ΅Π΅ ΠΊ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΈΠ³Π½Π°Π»Π° ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ <Ctrl>+<C>, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ, Π²ΡΠ·Π²Π°Π² ΡΡΠ½ΠΊΡΠΈΡ signal Π΅ΡΠ΅ ΡΠ°Π·. ΠΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΈ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΈΠ³Π½Π°Π»Π°, Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π» Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ. ΠΡΠ»ΠΈ Π²ΡΠΎΡΠΎΠΉ ΡΠΈΠ³Π½Π°Π» Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ Π² ΡΡΠΎΡ ΠΏΠ΅ΡΠΈΠΎΠ΄, Π²ΠΎΠΏΡΠ΅ΠΊΠΈ Π²Π°ΡΠΈΠΌ ΠΆΠ΅Π»Π°Π½ΠΈΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ.