if(signal(SIGALRM, sig_alrm)==SIG_ERR)
{
return(nsecs);
}
alarm(nsecs);
pause();
return (alarm(0));
********
위 구문에 문제점 중에
[ 첫 alarm 호출과 pause 호출 사이에 경쟁 조건이 존재한다.
바쁜 시스템의 경우 pause 가 호출되기도 전에 경보가 발동해서 신호 처리부가 호출될 수 있다. 그런 일이 생기면 pause 호출이 영원히 차단된다(다른 신호는 잡지 않는다고 할 때.) ]
1.이부분에서 이해가 안되는 것은 프로세스가 나누어 지지도 않았는데 왜 경쟁조건이 발생하는 지 궁금하네요
혹여나 제 추측이건데 alarm을 호출 후 nsecs 시간의 짧고 긴 것에 따라 pause를 먼저 호출하느냐 아니면 신호 처리부(handler)를 먼저 처리하
느냐의 경쟁 조건을 말하는 것인가요?