話ぶっちしてすまんが、
なんで正常終了できんとね
↓
#include <setjmp.h>
#include <signal.h>

jmp_buf a;

void b(int c)
{
longjmp(a, 1);
}

int main(void)
{
signal(SIGINT, b);
if (setjmp(a) == 0) for(;;);
return 0;
}