Signal: Difference between revisions
Jump to navigation
Jump to search
(→SIGHUP) |
|||
(7 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Overview == | == Overview == | ||
Signal 내용 정리 | Signal 내용 정리 | ||
== Signals == | |||
모든 시그널이 같은 동작을 유도하지 않는다. 또한, 프로세스에서 signal handler 를 설정했을 경우, signal handler 에서 지정된 동작을 하게된다. | |||
{| class="wikitable sortable" | |||
|- | |||
! Signal !! data-sort-type="number"|Alpha/Sparc !! data-sort-type="number"|X86/ARM/Others !! data-sort-type="number"|Mips !! Default Action !! class="unsortable"|Description | |||
|- | |||
| SIGABRT || 6 || 6 || 6 || Core || Abort signal from abort(3). | |||
|- | |||
| SIGALRM || 14 || 14 || 14 || Term || Timer signal from alarm(2). | |||
|- | |||
| SIGBUS || 10 || 7 || 10 || Core || Bus error(bad memory access). | |||
|- | |||
| SIGCHLD || 20 || 17 || 18 || Ign || Child stopped or terminated. | |||
|- | |||
| SIGCONT || 19 || 18 || 25 || Cont || Continue if stopped. | |||
|- | |||
| SIGFPE || 8 || 8 || 8 || Core || Floating point exception. | |||
|- | |||
| SIGHUP || 1 || 1 || 1 || Term || Hangup detected on controlling terminal or death of controlling process. | |||
|- | |||
| SIGILL || 4 || 4 || 4 || Core || Illegal instruction. | |||
|- | |||
| SIGINT || 2 || 2 || 2 || Term || Interrupt from keyboard | |||
|- | |||
| SIGKILL || 9 || 9 || 9 || Term || Kill signal | |||
|- | |||
| SIGPIPE || 13 || 13 || 13 || Term || Broken pipe: write to pipe with no readers. | |||
|- | |||
| SIGPOLL || - || - || - || Term || Pollable event(Sys V). Synonym for SIGIO. | |||
|- | |||
| SIGPROF || 27 || 27 || 29 || Term || Profiling timer expired. | |||
|- | |||
| SIGQUIT || 3 || 3 || 3 || Core || Quit from keyboard. | |||
|- | |||
| SIGSEGV || 11 || 11 || 11 || Core || Invalid memory reference. | |||
|- | |||
| SIGSTOP || 17 || 19 || 23 || Stop || Stop process | |||
|- | |||
| SIGSYS || 12 || 31 || 12 || Core || Bad argument to routine(SVr4). | |||
|- | |||
| SIGTERM || 15 || 15 || 15 || Term || Termination signal. | |||
|- | |||
| SIGTRAP || 5 || 5 || 5 || Core || Trace/breakpoint trap. | |||
|- | |||
| SIGTSTP || 18 || 20 || 24 || Stop || Stop typed at terminal. | |||
|- | |||
| SIGTTIN || 21 || 21 || 26 || Stop || Terminal input for background process. | |||
|- | |||
| SIGTTOU || 22 || 22 || 27 || Stop || Terminal output for background process. | |||
|- | |||
| SIGUSR1 || 30 || 10 || 16 || Term || User-defined signal 1. | |||
|- | |||
| SIGUSR2 || 31 || 12 || 17 || Term || User-defined signal 2. | |||
|- | |||
| SIGURG || 16 || 23 || 21 || Ign || Urgent condition on socket(4.2BSD). | |||
|- | |||
| SIGVTALRM || 26 || 26 || 28 || Term || Virtual alarm clock(4.2BSD). | |||
|- | |||
| SIGXCPU || 24 || 24 || 30 || Core || CPU time limit exceeded(4.2BSD). | |||
|- | |||
| SIGXFSZ || 25 || 25 || 31 || Core || File size limit exceeded(4.2BSD). | |||
|- | |||
| SIGIOT || 6 || 6 || 6 || Core || IOT trap. A synonym for SIGABRT. | |||
|- | |||
| SIGEMT || 7 || - || 7 || Term || | |||
|- | |||
| SIGSTKFLT || - || 16 || - || Term || Stack fault on coprocessor(unused). | |||
|- | |||
| SIGIO || 23 || 29 || 22 || Term || I/O now possible(4.2BSD). | |||
|- | |||
| SIGCLD || - || - || 18 || Ign || A synonym for SIGCHLD | |||
|- | |||
| SIGPWR || 29 || 30 || 19 || Term || Power failure(System V). | |||
|- | |||
| SIGINFO || 29 || - || - || Term || A synonym for SIGPWR. | |||
|- | |||
| SIGLOST || - || - || - || Term || File lock lost(unused). | |||
|- | |||
| SIGWINCH || 28 || 28 || 20 || Ign || Window resize signal(4.3BSD, Sun). | |||
|- | |||
| SIGUNUSED || - || 31 || - || Core || Synonymous with SIGSYS. | |||
|} | |||
* Term : 프로세스를 종료시킨다. 코어 파일을 생성하지는 않는다. | |||
* Ign : 시그널을 무시한다. | |||
* Core : 프로세스를 종료시키고 코어 파일을 생성한다. | |||
* Stop : 프로세스 동작을 정지시킨다. | |||
* Cont : 정지 상태인 프로세스를 다시 동작 시킨다. | |||
== SIGHUP == | == SIGHUP == | ||
접속된 Terminal 의 연결이 종료될 때 보내지는 signal 이다. 표준은 프로그램 종료이지만, 워낙 예전(표준이 없던 시절)부터 이 Signal 을 달리 처리하던 관습이 있어 많은 프로그램에서 SIGHUP 시그널을 달리 처리하고 있다. 특히 많은 DAEMON 프로그램에서는 설정 파일을 reload 하거나 logfile 을 reopen 하는 방식으로 구현하고 있다. | 접속된 Terminal 의 연결이 종료될 때 보내지는 signal 이다. 표준은 프로그램 종료이지만, 워낙 예전(표준이 없던 시절)부터 이 Signal 을 달리 처리하던 관습이 있어 많은 프로그램에서 SIGHUP 시그널을 달리 처리하고 있다. 특히 많은 DAEMON 프로그램에서는 설정 파일을 reload 하거나 logfile 을 reopen 하는 방식으로 구현하고 있다. | ||
== SIGPIPE == | |||
SIGPIPE 는 read 하는 곳이 없는 file descriptor 에 write 를 하는 경우 발생하는 signal 이다. | |||
주로 socket 통신 프로그램에서 발생하며, 서버/클라이언트 프로그램 동작 중, 어느 한쪽이 먼저 소켓을 종료한 후에, 다른쪽에서 write 를 할 경우 발생한다. 이런 경우 SIGPIPE signal handler 를 등록하거나, 소켓의 상태를 항시 확인하는 방법 등으로 쉽게 해결이 가능하다. | |||
=== See also === | |||
* https://stackoverflow.com/questions/8369506/why-does-sigpipe-exist | |||
== See also == | == See also == | ||
* https://en.wikipedia.org/wiki/SIGHUP - SIGHUP | * https://en.wikipedia.org/wiki/SIGHUP - SIGHUP | ||
[[category: | [[category:system]] |
Latest revision as of 07:40, 28 June 2017
Overview
Signal 내용 정리
Signals
모든 시그널이 같은 동작을 유도하지 않는다. 또한, 프로세스에서 signal handler 를 설정했을 경우, signal handler 에서 지정된 동작을 하게된다.
Signal | Alpha/Sparc | X86/ARM/Others | Mips | Default Action | Description |
---|---|---|---|---|---|
SIGABRT | 6 | 6 | 6 | Core | Abort signal from abort(3). |
SIGALRM | 14 | 14 | 14 | Term | Timer signal from alarm(2). |
SIGBUS | 10 | 7 | 10 | Core | Bus error(bad memory access). |
SIGCHLD | 20 | 17 | 18 | Ign | Child stopped or terminated. |
SIGCONT | 19 | 18 | 25 | Cont | Continue if stopped. |
SIGFPE | 8 | 8 | 8 | Core | Floating point exception. |
SIGHUP | 1 | 1 | 1 | Term | Hangup detected on controlling terminal or death of controlling process. |
SIGILL | 4 | 4 | 4 | Core | Illegal instruction. |
SIGINT | 2 | 2 | 2 | Term | Interrupt from keyboard |
SIGKILL | 9 | 9 | 9 | Term | Kill signal |
SIGPIPE | 13 | 13 | 13 | Term | Broken pipe: write to pipe with no readers. |
SIGPOLL | - | - | - | Term | Pollable event(Sys V). Synonym for SIGIO. |
SIGPROF | 27 | 27 | 29 | Term | Profiling timer expired. |
SIGQUIT | 3 | 3 | 3 | Core | Quit from keyboard. |
SIGSEGV | 11 | 11 | 11 | Core | Invalid memory reference. |
SIGSTOP | 17 | 19 | 23 | Stop | Stop process |
SIGSYS | 12 | 31 | 12 | Core | Bad argument to routine(SVr4). |
SIGTERM | 15 | 15 | 15 | Term | Termination signal. |
SIGTRAP | 5 | 5 | 5 | Core | Trace/breakpoint trap. |
SIGTSTP | 18 | 20 | 24 | Stop | Stop typed at terminal. |
SIGTTIN | 21 | 21 | 26 | Stop | Terminal input for background process. |
SIGTTOU | 22 | 22 | 27 | Stop | Terminal output for background process. |
SIGUSR1 | 30 | 10 | 16 | Term | User-defined signal 1. |
SIGUSR2 | 31 | 12 | 17 | Term | User-defined signal 2. |
SIGURG | 16 | 23 | 21 | Ign | Urgent condition on socket(4.2BSD). |
SIGVTALRM | 26 | 26 | 28 | Term | Virtual alarm clock(4.2BSD). |
SIGXCPU | 24 | 24 | 30 | Core | CPU time limit exceeded(4.2BSD). |
SIGXFSZ | 25 | 25 | 31 | Core | File size limit exceeded(4.2BSD). |
SIGIOT | 6 | 6 | 6 | Core | IOT trap. A synonym for SIGABRT. |
SIGEMT | 7 | - | 7 | Term | |
SIGSTKFLT | - | 16 | - | Term | Stack fault on coprocessor(unused). |
SIGIO | 23 | 29 | 22 | Term | I/O now possible(4.2BSD). |
SIGCLD | - | - | 18 | Ign | A synonym for SIGCHLD |
SIGPWR | 29 | 30 | 19 | Term | Power failure(System V). |
SIGINFO | 29 | - | - | Term | A synonym for SIGPWR. |
SIGLOST | - | - | - | Term | File lock lost(unused). |
SIGWINCH | 28 | 28 | 20 | Ign | Window resize signal(4.3BSD, Sun). |
SIGUNUSED | - | 31 | - | Core | Synonymous with SIGSYS. |
- Term : 프로세스를 종료시킨다. 코어 파일을 생성하지는 않는다.
- Ign : 시그널을 무시한다.
- Core : 프로세스를 종료시키고 코어 파일을 생성한다.
- Stop : 프로세스 동작을 정지시킨다.
- Cont : 정지 상태인 프로세스를 다시 동작 시킨다.
SIGHUP
접속된 Terminal 의 연결이 종료될 때 보내지는 signal 이다. 표준은 프로그램 종료이지만, 워낙 예전(표준이 없던 시절)부터 이 Signal 을 달리 처리하던 관습이 있어 많은 프로그램에서 SIGHUP 시그널을 달리 처리하고 있다. 특히 많은 DAEMON 프로그램에서는 설정 파일을 reload 하거나 logfile 을 reopen 하는 방식으로 구현하고 있다.
SIGPIPE
SIGPIPE 는 read 하는 곳이 없는 file descriptor 에 write 를 하는 경우 발생하는 signal 이다.
주로 socket 통신 프로그램에서 발생하며, 서버/클라이언트 프로그램 동작 중, 어느 한쪽이 먼저 소켓을 종료한 후에, 다른쪽에서 write 를 할 경우 발생한다. 이런 경우 SIGPIPE signal handler 를 등록하거나, 소켓의 상태를 항시 확인하는 방법 등으로 쉽게 해결이 가능하다.
See also
See also
- https://en.wikipedia.org/wiki/SIGHUP - SIGHUP