[OS] Signaling

·2020년 9월 30일
1

Signaling 예제 코드

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>

// 핸들러 함수 정의
void handlerFunc(int sig) {
  printf("handlerFunc() 호출됨\n");
  // SIGINT : 터미널 인터럽트
  // SIG_DFL : 기본 행동 수행, 메인 함수가 하던 일을 계속 수행하고 한 번 더 SIGINT가 오는 경우 프로세스 종료
  signal(SIGINT, SIG_DFL);
}

int main() {
  // SIGINT(키보드 인터럽트) 신호를 받으면 handlerFunc 수행
  signal(SIGINT, handlerFunc);

  int count = 0;
  while(1) {
    printf("count : %d\n", count++);
    sleep(1);
  }
  exit(0);
}

실행 결과

시그널 타입

  • SIGINT : 키보드 인터럽트
  • SIGFPE : 부동 소수점 예외
  • SIGKILL : 프로세스 종료
  • SIGCHLD : 자식 프로세스가 정지 또는 종료
  • SIGSEGV : 세그먼트 오류(비정상 종료, 메모리 엑세스 오류)
profile
https://devhdong.tistory.com 로 이전되었습니다.

0개의 댓글