Signal: Difference between revisions

From 탱이의 잡동사니
Jump to navigation Jump to search
No edit summary
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Overview ==
Signal 내용 정리
== Overview ==
== Overview ==
Signal 내용 정리
Signal 내용 정리


== Signals ==
== Signals ==
 
모든 시그널이 같은 동작을 유도하지 않는다. 또한, 프로세스에서 signal handler 를 설정했을 경우, signal handler 에서 지정된 동작을 하게된다.
* Term : 프로세스를 종료시킨다. 코어 파일을 생성하지는 않는다.
* Ign : 시그널을 무시한다.
* Core : 프로세스를 종료시키고 코어 파일을 생성한다.
* Stop : 프로세스 동작을 정지시킨다.
* Cont : 정지 상태인 프로세스를 다시 동작 시킨다.


{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-
! Signal !! data-sort-type="number"|Portable number !! Default Action !! class="unsortable"|Description
! 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
|-
|-
| SIGABRT || 6 || Core || Abort signal from abort(3).
| SIGPIPE || 13 || 13 || 13 || Term || Broken pipe: write to pipe with no readers.
|-
|-
| SIGALRM || 14 || Term || Timer signal from alarm(2).
| SIGPOLL || - || - || - || Term || Pollable event(Sys V). Synonym for SIGIO.
|-
|-
| SIGBUS || 10, 7, 10 || Core || Bus error(bad memory access).
| SIGPROF || 27 || 27 || 29 || Term || Profiling timer expired.
|-
|-
| SIGCHLD || 20, 17, 18 || Ign || Child stopped or terminated.
| SIGQUIT || 3 || 3 || 3 || Core || Quit from keyboard.
|-
|-
| SIGCONT || 19, 18, 25 || Cont || Continue if stopped.
| SIGSEGV || 11 || 11 || 11 || Core || Invalid memory reference.
|-
|-
| SIGFPE || 8 || Core || Floating point exception.
| SIGSTOP || 17 || 19 || 23 || Stop || Stop process
|-
|-
| SIGHUP || 1 || Term || Hangup detected on controlling terminal or death of controlling process.
| SIGSYS  || 12 || 31 || 12 || Core || Bad argument to routine(SVr4).
|-
|-
| SIGILL || 4 || Core || Illegal instruction.
| SIGTERM  || 15 || 15 || 15 || Term || Termination signal.
|-
|-
| SIGINT || 2 || Term || Interrupt from keyboard
| SIGTRAP || 5 || 5 || 5 || Core || Trace/breakpoint trap.
|-
|-
| SIGKILL || 9 || Term || Kill signal
| SIGTSTP || 18 || 20 || 24 || Stop || Stop typed at terminal.
|-
|-
| SIGPIPE || 13 || Term || Broken pipe: write to pipe with no readers.
| SIGTTIN || 21 || 21 || 26 || Stop || Terminal input for background process.
|-
|-
| SIGPOLL || || Term || Pollable event(Sys V). Synonym for SIGIO.
| SIGTTOU || 22 || 22 || 27 || Stop || Terminal output for background process.
|-
|-
| SIGPROF || 27, 27, 29 || Term || Profiling timer expired.
| SIGUSR1 || 30 || 10 || 16 || Term || User-defined signal 1.
|-
|-
| SIGQUIT || 3 || Core || Quit from keyboard.
| SIGUSR2 || 31 || 12 || 17 || Term || User-defined signal 2.
|-
|-
| SIGSEGV || 11 || Core || Invalid memory reference.
| SIGURG || 16 || 23 || 21 || Ign || Urgent condition on socket(4.2BSD).
|-
|-
| SIGSTOP || 17, 19, 23 || Stop || Stop process
| SIGVTALRM || 26 || 26 || 28 || Term || Virtual alarm clock(4.2BSD).
|-
|-
| SIGSYS  || 12, 31, 12 || Core || Bad argument to routine(SVr4).
| SIGXCPU || 24 || 24 || 30 || Core || CPU time limit exceeded(4.2BSD).
|-
|-
| SIGTERM  || 15 || Term || Termination signal.
| SIGXFSZ || 25 || 25 || 31 || Core || File size limit exceeded(4.2BSD).
|-
|-
| SIGTRAP || 5 || Terminate (core dump) || Trace/breakpoint trap.
| SIGIOT || 6 || 6 || 6 || Core || IOT trap. A synonym for SIGABRT.
|-
|-
| SIGTSTP || 18, 20, 24 || Stop || Stop typed at terminal.
| SIGEMT || 7 || - || 7 || Term ||  
|-
|-
| SIGTTIN || 21, 21, 26 || Stop || Terminal input for background process.
| SIGSTKFLT || - || 16 || - || Term || Stack fault on coprocessor(unused).
|-
|-
| SIGTTOU || 22, 22, 27 || Stop || Terminal output for background process.
| SIGIO || 23 || 29 || 22 || Term || I/O now possible(4.2BSD).
|-
|-
| SIGUSR1 || 30, 10, 16 || Term || User-defined signal 1.
| SIGCLD || - || - || 18 || Ign || A synonym for SIGCHLD
|-
|-
| SIGUSR2 || 31, 12, 17 || Term || User-defined signal 2.
| SIGPWR || 29 || 30 || 19 || Term || Power failure(System V).
|-
|-
| SIGURG || n/a || Ignore || High bandwidth data is available at a socket.
| SIGINFO || 29 || - || - || Term || A synonym for SIGPWR.
|-
|-
| SIGVTALRM || n/a || Terminate || Virtual timer expired.
| SIGLOST || - || - || - || Term || File lock lost(unused).
|-
|-
| SIGXCPU || n/a || Terminate (core dump) || CPU time limit exceeded.
| SIGWINCH || 28 || 28 || 20 || Ign || Window resize signal(4.3BSD, Sun).
|-
|-
| SIGXFSZ || n/a || Terminate (core dump) || File size limit exceeded
| 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 하는 방식으로 구현하고 있다.


== See also ==
== SIGPIPE ==
* https://en.wikipedia.org/wiki/SIGHUP - SIGHUP
SIGPIPE 는 read 하는 곳이 없는 file descriptor 에 write 를 하는 경우 발생하는 signal 이다.


[[category:linux]]
주로 socket 통신 프로그램에서 발생하며, 서버/클라이언트 프로그램 동작 중, 어느 한쪽이 먼저 소켓을 종료한 후에, 다른쪽에서 write 를 할 경우 발생한다. 이런 경우 SIGPIPE signal handler 를 등록하거나, 소켓의 상태를 항시 확인하는 방법 등으로 쉽게 해결이 가능하다.


 
=== See also ===
== SIGHUP ==
* https://stackoverflow.com/questions/8369506/why-does-sigpipe-exist
접속된 Terminal 의 연결이 종료될 때 보내지는 signal 이다. 표준은 프로그램 종료이지만, 워낙 예전(표준이 없던 시절)부터 이 Signal 을 달리 처리하던 관습이 있어 많은 프로그램에서 SIGHUP 시그널을 달리 처리하고 있다. 특히 많은 DAEMON 프로그램에서는 설정 파일을 reload 하거나 logfile 을 reopen 하는 방식으로 구현하고 있다.


== See also ==
== See also ==
* https://en.wikipedia.org/wiki/SIGHUP - SIGHUP
* https://en.wikipedia.org/wiki/SIGHUP - SIGHUP


[[category:linux]]
[[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