■ 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]키를 재차 누르면 원래의 핸들러 기능을 수행해서 프로세스가 종료된다.

by 민트앤라떼 2012. 5. 21. 14:40