본문바로가기

 SIGNAL ERROR 정의 및 설명

 개발관련  2014. 9. 3. 22:38  창조컨서턴트









SIGNAL ERROR 정의 및 설명


The Open Group Base Specifications Issue 6
IEEE Std 1003.1, 2004 Edition

http://pubs.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html

http://en.wikipedia.org/wiki/SIGABRT

 

Some of the functionality described on this reference page extends the ISO C standard. Applications shall define the appropriate feature test macro (see the System Interfaces volume of IEEE Std 1003.1-2001, Section 2.2, The Compilation Environment) to enable the visibility of these symbols in this header.

 

 

Signal

Default Action

Description

SIGABRT

A

Process abort signal.

시그널은 프로그램 그 자체와 abort가 호출되었음을 보고함으로써 발생되는 에러를 지적한다

SIGALRM

T

Alarm clock.

시그널은 전형적으로 실제또는 클럭 시간을 계산한 타이머의 경과를 지적한다

SIGBUS

A

Access to an undefined portion of a memory object.

시그널은 유용하지 않은 포인터가 비참조되었을 때 발생

SIGCHLD

I

Child process terminated, stopped,

[XSI] [Option Start] 

 

or continued. [Option End]

SIGCONT

C

Continue executing, if stopped.

SIGFPE

A

Erroneous arithmetic operation.

시그널은 심각한 산술적 에러를 보고한다. 그 이름이 "floating-point exception"에서 유래된것이라 할지라도, 이 시그널은 실제로는 모든 산술적 에러들에 작용한다.

SIGHUP

T

Hangup.

시그널은 사용자 터미널의 단절을 보고하기 위해 사용되어지는데,

아마도 네트웍이나 전화선 연결이 끊어졌기 때문이다

SIGILL

A

Illegal instruction.

오직 유용한 명령어만이 발생된 C 컴파일러에서, SIGILL은 전형적으로 실행 가능 파일이 훼손되었거나,

당신이 데이터를 실행하려 시도했다는 것을 지적한다

SIGINT

T

Terminal interrupt signal.

시그널은 사용자가 INTR 문자를 (보통 C-c)을 입력했을 때 보내어진다

SIGKILL

T

Kill (cannot be caught or ignored).

시그널은 즉각적인 프로그램 종료를 일으키기 위해서 사용되어진다

SIGPIPE

T

Write on a pipe with no one to read it.

SIGQUIT

A

Terminal quit signal.

시그널은 다른 키_QUIT 문자, 보통 C-\_에 의해서 제어된다는 것을 제외하고는 SIGINT와 유사하고, 그 프로세스가 종료 될 때 프로그램 에러 시그널처럼 코어 파일을 작성한다

SIGSEGV

A

Invalid memory reference.

시그널은 할당된 메모리의 범위를 벗어나는곳에서 읽거나, 쓰기를 시도할 때 발생 된다

SIGSTOP

S

Stop executing (cannot be caught or ignored).

SIGTERM

T

Termination signal.

시그널은 프로그램을 종료하는데 사용하는 포괄적인 시그널이다

SIGTSTP

S

Terminal stop signal.

SIGTTIN

S

Background process attempting read.

SIGTTOU

S

Background process attempting write.

SIGUSR1

T

User-defined signal 1.

SIGUSR2

T

User-defined signal 2.

[XSI] [Option Start]SIGPOLL

T

Pollable event.

SIGPROF

T

Profiling timer expired.

SIGSYS

A

Bad system call.

SIGTRAP

A

Trace/breakpoint trap. [Option End]

SIGURG

I

High bandwidth data is available at a socket.

[XSI] [Option Start]SIGVTALRM

T

Virtual timer expired.

SIGXCPU

A

CPU time limit exceeded.

SIGXFSZ

A

File size limit exceeded. [Option End]

 

 

 

Signal

Code

Reason

[XSI] [Option Start]SIGILL

ILL_ILLOPC

Illegal opcode.

 

ILL_ILLOPN

Illegal operand.

 

ILL_ILLADR

Illegal addressing mode.

 

ILL_ILLTRP

Illegal trap.

 

ILL_PRVOPC

Privileged opcode.

 

ILL_PRVREG

Privileged register.

 

ILL_COPROC

Coprocessor error.

 

ILL_BADSTK

Internal stack error.

SIGFPE

FPE_INTDIV

Integer divide by zero.

 

FPE_INTOVF

Integer overflow.

 

FPE_FLTDIV

Floating-point divide by zero.

 

FPE_FLTOVF

Floating-point overflow.

 

FPE_FLTUND

Floating-point underflow.

 

FPE_FLTRES

Floating-point inexact result.

 

FPE_FLTINV

Invalid floating-point operation.

 

FPE_FLTSUB

Subscript out of range.

SIGSEGV

SEGV_MAPERR

Address not mapped to object.

 

SEGV_ACCERR

Invalid permissions for mapped object.

SIGBUS

BUS_ADRALN

Invalid address alignment.

 

BUS_ADRERR

Nonexistent physical address.

 

BUS_OBJERR

Object-specific hardware error.

SIGTRAP

TRAP_BRKPT

Process breakpoint.

 

TRAP_TRACE

Process trace trap.

SIGCHLD

CLD_EXITED

Child has exited.

 

CLD_KILLED

Child has terminated abnormally and did not create a core file.

 

CLD_DUMPED

Child has terminated abnormally and created a core file.

 

CLD_TRAPPED

Traced child has trapped.

 

CLD_STOPPED

Child has stopped.

 

CLD_CONTINUED

Stopped child has continued.

SIGPOLL

POLL_IN

Data input available.

 

POLL_OUT

Output buffers available.

 

POLL_MSG

Input message available.

 

POLL_ERR

I/O error.

 

POLL_PRI

High priority input available.

 

POLL_HUP

Device disconnected. [Option End]

[CX] [Option Start]Any

SI_USER

Signal sent by kill().

 

SI_QUEUE

Signal sent by the sigqueue().

 

SI_TIMER

Signal generated by expiration of a timer set by timer_settime().

 

SI_ASYNCIO

Signal generated by completion of an asynchronous I/O request.

 

SI_MESGQ

Signal generated by arrival of a message on an empty message queue. [Option End]

 

 

SIGNAL


설명

리눅스는 아래 나열된 시그널을 지원한다. 몇몇 개의 시그널 번호는 아키텍쳐 의존적이다. 먼저 POSIX.1에서 설명하는 시그널이다.

시그널

번호

행동

설명

SIGINT

2

A

키보드로부터의 인터럽트(interrupt) 시그널

SIGQUIT

3

C

키보드로부터의 종료(quit) 시그널

SIGILL

4

C

잘못된 명령어(Illegal Instruction)

SIGABRT

6

C

abort(3)로부터의 중단(abort) 시그널

SIGFPE

8

C

부동 소수점 예외(exception)

SIGKILL

9

AEF

kill 시그널

SIGSEGV

11

C

잘못된 메모리 참조

SIGPIPE

13

A

깨진 파이프: 수신자가 없는 파이프에 쓰기

SIGALRM

14

A

alarm(2)으로부터의 타이머 시그널

SIGTERM

15

A

종료(termination) 시그널

SIGUSR1

30,10,16

A

사용자 정의 시그널 1

SIGUSR2

31,12,17

A

사용자 정의 시그널 2

SIGCHLD

20,17,18

B

자식 프로세스가 중단 또는 종료

SIGCONT

19,18,25

중단되었다면 재개(continue)

SIGSTOP

17,19,23

DEF

프로세스 중단

SIGTSTP

18,20,24

D

터미널에서의 중단 시그널

SIGTTIN

21,21,26

D

백그라운드 프로세스에 대한 터미널 입력

SIGTTOU

22,22,27

D

백그라운드 프로세스에 대한 터미널 출력

다음은 POSIX.1의 시그널은 아니지만 SUSv2에서 설명하고 있는 것이다.


시그널

번호

행동

설명

SIGPOLL

A

폴링(poll) 이벤트 (Sys V). SIGIO와 같다.

SIGPROF

27,27,29

A

프로파일링(profiling) 타이머 시그널

SIGSYS

12,-,12

C

루틴에 잘못된 인자 (SVID)

SIGTRAP

5

C

trace/breakpoint 트랩

SIGURG

16,23,21

B

소켓에 대한 긴급(urgent) 상황 (4.2 BSD)

SIGVTALRM

26,26,28

가상 알람 클럭 (4.2 BSD)

SIGXCPU

24,24,30

C

CPU 시간 제한 초과 (4.2 BSD)

SIGXFSZ

25,25,31

C

파일 크기 제한 초과 (4.2 BSD)

(SIGSYS, SIGXCPU, SIGXFSZ와 몇몇 아키텍쳐에서는 SIGBUS의 기본 행동은 SUSv2에서 C(종료와 코어 덤프)로 나와있지만 현재 리눅스(2.3.27)에서 까지는 A(종료)이다)

다음은 여러 가지 다른 시그널.

시그널

번호

행동

설명

SIGEMT

7,-,7

SIGSTKFLT

-,16,-

보조프로세서의 스택 오류

SIGIO

23,29,22

A

현재 I/O가 가능 (4.2 BSD)

SIGCLD

-,-,18

SIGCHLD와 같다.

SIGPWR

29,30,19

A

전원 문제 (System V)

SIGINFO

29,-,-

SIGPWR와 같다.

SIGLOST

-,-,-

A

파일 락(lock) 손실

SIGWINCH

28,28,20

B

윈도우 크기 변경 시그널 (4.3 BSD, Sun)

SIGUNUSED

-,31,-

A

사용되지 않는 시그널 (SIGSYS가될 것이다)

(여기서 -는 시그널이 없음을 나타낸다; 세 가지 값이 있다. 첫번째 것은 대개 alpha sparc에서, 중간의 것은 i386, ppc sh에서, 마지막 것은 mips에서 유효한 값이다. 29번 시그널은 alpha에서는 SIGINFO / SIGPWR이지만 sparc에서는 SIGLOST이다.)

"행동" 컬럼의 문자는 다음과 같은 의미이다:


A 기본 행동이 프로세스를 종료하는 것이다.

B 기본 행동이 시그널을 무시하는 것이다.

C 기본 행동이 프로세스를 종료하고 코어를 덤프한다.

D 기본 행동이 프로세스를 멈추는 것이다.

E 핸들러를 둘 수 없는 시그널이다.

F 무시할 수 없는 시그널이다.

[출처] Linux Signal 종류|작성자 싸나마나