void handler(int signo)
{
printf("SIGINT 수신 \n");
}
int main(void)
{
int i;
signal(SIGINT, (void *)handler);
for(i=0;i<10;i++)
{
printf("sleep 1 second \n");
sleep(1);
}
return 0;
}
내가 원하는 동작은 ctrl+c를 몇 번 누르든 상관 없이 sleep 1 second 1번 출력되고 1초 쉬고를 반복하는건데
이 코드대로 돌려보면 ctrl+c를 누르고 있으면 sleep 1 second 하고 SIGINT 수신 이 2문장 번갈아가면서 쉴새없이 나오다가 종료됨..
뭐가 문제인지도 모르겠음.. 좀 알려줄 수 있음?
signal함수는 잘 모르긴 하지만 handler함수에 exit(0); 쓰면 어떰?
ctrl+c 누르면 SIGINT가 보내지는걸 짐작해서 감히 추측해봤음
exit(0); 해봤는데 프로그램 바로 죽음..
아 ctrl c 무시하고 계속 프로그램 돌리려는거구나~ 몰르겠다 수고링~ - dc App
뭘 하려는건진 모르겠는데 signal함수는 시그널 콜돼서 핸들러 호출되면 다시 초기화 되니까 두번째 인터럽트 시그널맞고 죽을거임. sigaction 써봐 nop