Π‘ΠΈΠ³Π½Π°Π»
SIGCHLD
ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ½ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ. ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΠ³Π½Π°Π»Ρ Π·Π°ΡΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠΈΠ΅ ΠΈΡ
, ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠ³Π½Π°Π»Π°
SIGCONT
, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠ½ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΠΈ ΡΠ΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ
.
Π§ΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΠ΅ΡΠ²ΡΡ Π³ΡΡΠΏΠΏΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ². ΠΠΎΠΊΠ° ΠΆΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·Π½Π°ΡΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ, Π²Π²ΠΎΠ΄ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ (ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΡ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡ <Ctrl>+<C>) Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ ΡΠΈΠ³Π½Π°Π»Π°
SIGINT
ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ, Ρ.Π΅. ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅ΠΉΡΡ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΡΠΎ Π²ΡΠ·ΠΎΠ²Π΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π΅ΡΠ»ΠΈ Π² Π½Π΅ΠΉ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ ΠΏΠ΅ΡΠ΅Ρ
Π²Π°Ρ ΡΠΈΠ³Π½Π°Π»Π°,
ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΈΠ³Π½Π°Π» Π½Π΅ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅, Π° Π΄ΡΡΠ³ΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
kill
. ΠΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈΠΌΡ ΡΠΈΠ³Π½Π°Π»Π° ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ ΠΈ PID (ΠΊΠΎΡΠΎΡΡΠΉ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ps). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΈΠ³Π½Π°Π»Π° "ΠΎΡΡΠ°Π½ΠΎΠ² ΠΈΠ»ΠΈ ΡΠ°Π·ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅" ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅ΠΉΡΡ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ Ρ PID 512, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
$ <b>kill -HUP 512</b>
Π£Π΄ΠΎΠ±Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
kill
β ΠΊΠΎΠΌΠ°Π½Π΄Π°
killall
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΈΠ³Π½Π°Π» Π²ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΠ΅ Π²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ UNIX ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΅Π΅, Π½ΠΎ ΠΠ‘ Linux, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ. ΠΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅ PID ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ»ΠΈ Ρ
ΠΎΡΠΈΡΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΈΠ³Π½Π°Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΠ°Π·Π½ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΌ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΠ±ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ β Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
inetd
ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
$ <b>killall -HUP inetd</b>
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΈΠ³Π½Π°Π»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ
signal
.
<b>#include <signal.h></b>
<b>void (*signal(int sig, void (*func)(int)))(int);</b>
ΠΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ
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
Π²Π΅ΡΠ½ΡΠ» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π·Π°ΡΡΠ°Π²Π»ΡΡΡΠ΅Π΅ Π΅Π΅ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ.
$ <b>./ctrlcl</b>
Hello World!
Hello World!
Hello World!
Hello World!
<b>^C</b>
OUCH! - I got signal 2
Hello World!
Hello World!
Hello World!
Hello World!
<b>^C</b>
$
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΈΠ³Π½Π°Π»Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ β Π½ΠΎΠΌΠ΅Ρ ΡΠΈΠ³Π½Π°Π»Π°, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΠΉ ΠΊ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ΄Π½Π° ΠΈ ΡΠ° ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΠΈΠ³Π½Π°Π»ΠΎΠ². Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
SIGINT
, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π² ΡΡΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ°Π²Π½ΡΠΌ 2. ΠΠ΅ ΡΡΠΎΠΈΡ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ², Π² Π½ΠΎΠ²ΡΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ
Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΡΠΈΠ³Π½Π°Π»ΠΎΠ².
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
ΠΡΠ·ΡΠ²Π°ΡΡ ΠΈΠ· ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΈΠ³Π½Π°Π»Π° Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
printf
, Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ. Π£Π΄ΠΎΠ±Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π°Π³, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΠΉ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΈΠ³Π½Π°Π»Π°, ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΡΠΎΡ ΡΠ»Π°Π³ Π² ΡΡΠ½ΠΊΡΠΈΠΈ
main
ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ. Π ΠΊΠΎΠ½ΡΠ΅ ΡΡΠΎΠΉ Π³Π»Π°Π²Ρ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π² ΡΠ΅Π»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠΈΠ³Π½Π°Π»ΠΎΠ².
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΡΡΠΎΠ΅Π½Π° ΡΠ°ΠΊ, ΡΡΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π·Π°Π΄Π°Π΅ΡΠ΅ ΡΠΈΠ³Π½Π°Π»
SIGINT
, Π½Π°ΠΆΠΈΠΌΠ°Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ <Ctrl>+<C>, Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ
ouch
. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ
ouch
Π·Π°Π²Π΅ΡΡΠΈΡΡΡ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ, Π½ΠΎ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ΅Π°ΠΊΡΠΈΡ Π½Π° ΡΠΈΠ³Π½Π°Π», ΠΏΡΠΈΠ½ΡΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. (Π£ ΡΠ°Π·Π½ΡΡ
Π²Π΅ΡΡΠΈΠΉ UNIX, Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Ρ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΡ Berkeley UNIX, Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ
Π»Π΅Ρ ΡΠ»ΠΎΠΆΠΈΠ»ΠΎΡΡ ΡΠ°Π·Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠΈΠ³Π½Π°Π»ΠΎΠ². ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΡΠΈΠ³Π½Π°Π»Π°, Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.) ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π²ΡΠΎΡΠΎΠΉ ΡΠΈΠ³Π½Π°Π»
SIGINT
, ΠΎΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠ΅Π΅ ΠΊ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.