P rogramming/Linux System
시그널의 등록과 처리
민트앤라떼
2012. 5. 21. 14:40
■ sigaction() 함수는 signal 함수보다 향상된 기능을 제공한다.
(1) 함수원형
#include <signal.h>
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
○ 반환값
- 성공 시 : 0
- 실패 시 : -1
○ 인자
- signum : 시그널 번호
- act : 새롭게 설정할 처리
- oldact : 이 함수를 호출하기 전에 설정된 처리 정보를 입력
(2) singaction 구조체
struct sigaction {
void (*sa_handeler) (int)
void (*sa_sigaction) (int, siginfo_t *, void *)
sigset_tsa_mask;
intsa_flags;
void (*sa_restorer) (void);
}
(3) 실행예제
○ Source Code
○ Result
- [ctrl+c]키를 처음 누르면 등록된 시그널 처리기가 동작하고, [ctrl+c]키를 재차 누르면 원래의 핸들러 기능을 수행해서 프로세스가 종료된다.