신호 처리기를 사용하는 올바른 방법은 무엇입니까?신호 처리기를 사용하는 올바른 방법
나는이 question에서 아래의 코드를 보았고 왜 여전히 signal(SIGSEGV,sig_func);
을 sig_func에 넣어야하는지 궁금합니다. 프로세스가 SIGSEGV 신호를 수신 할 때 끊어지지 않는 루프를 생성하지 않을까요?
void sig_func(int sig)
{
write(1, "Caught signal 11\n", 17);
signal(SIGSEGV,sig_func);
}
int main()
{
signal(SIGSEGV,sig_func); //Install the signal handler
//Do work here
}
man 페이지가'signal()의 유일한 휴대용 사용은 SIG_DFL 또는 SIG_IGN으로 신호 처리를 설정하는 것입니다. 신호 처리기를 설정하기 위해 signal()을 사용할 때의 의미는 시스템 (...)에 따라 다릅니다. ____이 목적을 위해 그것을 사용하지 마십시오 ____. POSIX.1은 명시 적 제어를 제공하는 sigaction (2)을 지정함으로써 이식성 난제를 해결했다. –