※요약

Signal은 Unix/Linux에서 커널이나 프로세스가 다른 프로세스에게 비동기적인 사건을 알려주거나 시간을 동기화 시키기 위해 사용한다. signal을 받은 프로세스는 보통 3가지 작업을 할 수 있다. 프로세스를 종료하거나 signal 무시, 받은 signal에 따른 적절한 행동이 그 3가지이다.

필자가 리눅스에서 C로 개발하면 처음 접한 signal은 SIGSEGV(11)이다. SIGSEGV은 잘못된 메모리 관리 때문에 생기는 신호로써, sprintf함수를 이용하여 서식 문자를 만들다가 int형을 %s로 서식을 지정하여 발생하였었다.

 


※특징

아래는 signal 리스트이다. 

 Signal Name

 Number

 Description

 SIGHUP

 1

 Hangup (POSIX)

 SIGINT

 2

 Terminal interrupt (ANSI)

 SIGQUIT

 3

 Terminal quit (POSIX)

 SIGILL

 4

 Illegal instruction (ANSI)

 SIGTRAP

 5

 Trace trap (POSIX)

 SIGIOT

 6

 IOT Trap (4.2 BSD)

 SIGBUS

 7

 BUS error (4.2 BSD)

 SIGFPE

 8

 Floating point exception (ANSI)

 SIGKILL

 9

 Kill(can't be caught or ignored) (POSIX)

 SIGUSR1

 10

 User defined signal 1 (POSIX)

 SIGSEGV

 11

 Invalid memory segment access (ANSI)

 SIGUSR2

 12

 User defined signal 2 (POSIX)

 SIGPIPE

 13

 Write on a pipe with no reader, Broken pipe (POSIX)

 SIGALRM

 14

 Alarm clock (POSIX)

 SIGTERM

 15

 Termination (ANSI)

 SIGSTKFLT

 16

 Stack fault

 SIGCHLD

 17

 Child process has stopped or exited, changed (POSIX)

 SIGCONT

 18

 Continue executing, if stopped (POSIX)

 SIGSTOP

 19

 Stop executing(can't be caught or ignored) (POSIX)

 SIGTSTP

 20

 Terminal stop signal (POSIX)

 SIGTTIN

 21

 Background process trying to read, from TTY (POSIX)

 SIGTTOU

 22

 Background process trying to write, to TTY (POSIX)

 SIGURG

 23

 Urgent condition on socket (4.2 BSD)

 SIGXCPU

 24

 CPU limit exceeded (4.2 BSD)

 SIGXFSZ

 25

 File size limit exceeded (4.2 BSD)

 SIGVTALRM

 26

 Virtual alarm clock (4.2 BSD)

 SIGPROF

 27

 Profiling alarm clock (4.2 BSD)

 SIGWINCH

 28

 Window size change (4.3 BSD, Sun)

 SIGIO

 29

 I/O now possible (4.2 BSD)

 SIGPWR

 30

 Power failure restart (System V)


+ Recent posts