리눅스 Ctrl+c 및 종료 시그널 처리

인터럽트 종료 시그널 처리

 Linux application에서 인터럽트 종료 시그널 처리 예는 아래와 같다.


#include <sys/signal.h>

void sigint_handler( int signo)
{
    //
}


int main(int argc, char *argv[])
{

    signal(SIGINT, sigint_handler);
    signal(SIGTERM, sigint_handler);


    ...

    return 0;
}


1. signal 함수를 통해 시그널 핸들러 함수를 등록한다.

2. 인터럽트가 발생하면 핸들러 함수가 호출된다.

3. 핸들러 함수에서 해당 인터럽트를 처리한다.


기타 종료 시그널

닫혀 있는 소켓에 데이터를 쓰면,SIGPIPE 시그널이 발생해 application이 종료된다.

이때 application이 종료되지 않도록 하려면 아래와 같은 코드를 추가하면 된다.


signal(SIGPIPE, SIG_IGN);


댓글

이 블로그의 인기 게시물

간단한 cfar 알고리즘에 대해

windows에서 간단하게 크롬캐스트(Chromecast)를 통해 윈도우 화면 미러링 방법

Embedded Linux USB Ethernet Gadget 사용하기

mkfs.fat Device or resource busy 에러 해결법

python winsound를 이용한 윈도우 환경에서 소리 재생 예제