본문 바로가기

개발/Linux

프로세스와 신호 - 신호

반응형

신호

- 신호는 유닉스와 리눅스 시스템이 어떤 조건에 따라 발생시키는 사건(event)이다. 시스템이 특정 시건에 반응해서 특정 프로세스에 신호를 보내면, 신호를 받은 프로세스는 그에 맞는 행동을 취하게 된다. 

- 신호가 발생하는 것은 일으킨다(raise)라고 칭하며, 프로세스가 신호를 감지해서 반응하는 것은 잡는다(catch)라고 한다. 


프로그램 안에서 실호를 처리할 때는 signal 라이브러리 함수를 사용

#include <signal.h>

vodi (*signal(int sig, void(*func)(int)))(int);


예제 소스

실행 결과

처음 ctrl+c에 의해 SIGINT가 발생 하면서 ouch가 호출된다. 

메시지가 출력된 후 다시 제어권을 main으로 반환한다.

두번째 ctrl+c 가 눌러지면 기본 행동이 일어난다. 


- signal 인터페이스를 이용하여 신호를 잡는 방식은 신뢰성이 떨어진다. sigaction인터페이스를 사용하는 것이 더깔끔하다. 

반응형