[리눅스커널] 시그널: 유저 공간 suspend() 함수 분석하기

Guillermo Austin Kim|2019년 8월 25일
Posts

[리눅스커널] 시그널: 유저 공간 suspend() 함수 분석하기

Guillermo Austin Kim|2019년 8월 25일

sigsuspend() 함수는 다음 동작을 한번에 수행합니다.1. 시그널 블록을 설정2. 시그널이 도착할 때까지 기다림 sigsuspend() 함수 동작을 다른 코드로 표현하면 다음과 같습니다. sigprocmask( SIG_SETMASK, &sert, NULL); pause(); 그런데 위 코드와 같이 구현을 했다면 문제가 발생할 수 있습니다. 그 이유는 다음과 같습니다.  sigprocmask() 함수와 pause() 함수 호출 사이에도 시그널이 발생할 수 있다. sigprocmask() 함수를 처리하는 도중에 발생한 시그널은 처리되지 않는 것입니다. 한 가지 예를 들어 볼까요? 여러분이 ‘Ctrl+C’ 키를 한 번만 누르면 터미널 프로그램이 종료돼야 하는데 가끔 여러 번