Sending and Handling Signals in C (kill, signal, sigaction)
mac이나 리눅스와 같은 모든 unix 스타일 운영체제에서 말이에요.
혹시 리눅스나 맥같은 unix 운영체제를 쓰고있으신가요? 그동안 몰랐겠지만, 당신이 프로그램을 종료시키기 위해 ctrl + C를 누를 때마다 시그널들을 사용하고 있던 겁니다.
그럼 이제 예시를 하나 살펴보도록 할까요.
절대 종료되지 않는 무한루프 프로그램이 있다고 해봅시다. 그냥 영원히 실행되고 있는거에요.
보통 학생들의 경우에 이런 코드는 실수로 작성된 것이겠지만, 이건 설명하려는 목적이니까 일부러 이렇게 만들어봤습니다.
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main()
{
while (1)
{
printf("Wasting your cycles. %d\\n", getpid());
//getpid()는 함수를 호출한 프로세스의 pid를 가리킨다.
sleep(1);
}
}
이런 경우 아래와 같은 실행 화면이 무한히 나타나게 되는데요. 그러면 당신은 이 화면을 잠시 보다가, 프로세스를 죽이기 위해서 주로 ctrl+C를 누르게 될거에요.
이때 당신은 알지 못했겠지만 프로세스에 SIGINT 시그널을 보낸 것입니다. 이 시그널은 기본적으로 해당 프로세스를 방해하고 그 프로세스를 끝내라고 전해주는 역할을 해요.

아직까진 별로 재미없네요. 그럼 내용을 조금 바꿔서 더 재밌게 해볼까요.