본문 바로가기
한국으로/임베디드 리눅스

2.2 시그널

by 영킴. 2018. 6. 27.

2.2 시그널

2.2.1 스탠다드 시그널

 Signal

Value 

Action 

Comment 

SIGHUP 

 Term

 Hangup detected on controlling terminal or death of controlling process

SIGINT 

2

 Term

 Interrupt from keyboard

SIGQUIT 

 Core

 Quit from keyboard

SIGILL 

 Core

 Illegal Instruction

SIGABRT

 Core

 Abort signal from abort(3)

SIGFPE 

 Core

 Floating-point exception

SIFKILL *

 Term

 Kill signal

SIGSEGV 

11 

 Core

 Invalid memory reference

SIGPIPE 

13 

 Term

 Broken pipe: write to pipe with no readers; see pipe(7)

SIGALRM 

14 

 Term

 Timer signal from alarm(2)

SIGTERM 

15 

 Term

 Termination signal

SIGUSR1 

30, 10, 16

 Term

 User-defined signal 1

SIGUSR2 

31, 12, 17 

 Term

 User-defined signal 2

SIGCHLD 

20, 17, 18 

 Ign

 Child stopped or terminated

SIGCONT

19, 18, 25

 Cont

 Continue if stopped

SIGSTOP *

17, 19, 23 

 Stop 

 Stop process

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

 *The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.


       Term   Default action is to terminate the process.

       Ign     Default action is to ignore the signal.

       Core   Default action is to terminate the process and dump core.

       Stop   Default action is to stop the process.

       Cont   Default action is to continue the process if it is currently stopped.


나머지 시그널 정보는 Linux Programmar's Manual 참고




2.2.2 시그널 함수

typdef void (*sighandler_t)(int);

sighandler_t signal(int signum, sighandler_t handler);

기능: 시그널의 동작을 규정
리턴: 성공 시 이전 시그널 핸들러, 실패 시 SIG_ERR 리턴
signum: 시그널 번호
handler: SIG_IGN(시그널 무시), SIG_DFL(시그널 디폴트 동작 수행), 프로그래머 지정 함수(시그널 핸들러)

int kill(pid_t pid, int sig);

기능: 프로세스에  시그널을 보냄
리턴: 성공 시 0, 실패 시 errno 설정 후 -1 리턴
pid: 0인 경우 호출한 프로세스와 PGID가 같은 모든 프로세스
-1인 경우 모든 프로세스 (접근 허용)
-1 미만인 경우 PGID가 -pid 인 모든 프로세스
0 초과인 경우 PID가 pid 인 프로세스
sig: 시그널 번호

unsigned int alarm(unsigned int seconds)

기능: 시그널 전달용 알람 시계
리턴: 이전 설정된 알람 시계의 남은 시간초, 없으면 0 리턴
seconds: 0인 경우 알람 설정 무시
seconds 초 후에 SIGALRM 시그널 발생
alarm() 호출 시 이전 설정 알람은 취소됨

int pause(void);

기능: 잠자면서 시그널을 기다림
리턴: 시그널이 걸리고 시그널 핸들러가 종료된 경우에만 리턴
항상 errno를 EINTR로 설정 후 -1 리턴


'한국으로 > 임베디드 리눅스' 카테고리의 다른 글

3.4 메시지 큐  (0) 2018.06.27
3.3 공유 메모리  (0) 2018.06.27
3.2 세마포어  (0) 2018.06.27
3.1 파이프  (0) 2018.06.27
2.1 프로세스  (0) 2018.06.27
1.6 파일 입출력  (0) 2018.06.27
1.5 응용 프로그램  (0) 2018.06.26
1.4 개발환경 구축  (0) 2018.06.26