signal handling관련한 문제인데요.
글쓴이: uamyd5279 / 작성시간: 목, 2005/03/31 - 10:27오전
별 다른 건 없고. 이해가 되질 않아서 여기에 올립니다.
void ExitProc( int signo ) { printf("Exit:%d\n",signo); exit(1); } void AlarmSignal( int sig ) { signal( sig, AlarmSignal ); return; } int main() { signal( SIGINT,ExitProc ); signal( SIGTERM,ExitProc ); signal( SIGIALRM, AlarmSignal ); while( 1 ){ puts("hello, pc"); } }
위와 같은 형식입니다.
인터럽트 cntl+c를 누르면 printf("exit..") 수행하고 죽어야 하는게 정상 아닙니까?
같은 형식인데도, 어떤 프로세스는 제대로 찍고 죽고, 어떤 프로세스는 절대(?) 죽지 않더군요.
차이점을 생각하면, 죽는 프로세스는 별다른 화일관리가 없고 메모리상에서만 작동을 하고( 물론 가끔 화일관리도 합니다만, )
죽지 않는 프로세스는 화일관리 때문에 매우 느립니다.
어떻게 수행속도는 설명을 못드리겠는데요, 하여간에 그렇습니다.
왜 어떤건 인터럽트가 걸리고, 어떤건 안걸리는 건지...너무 궁금합니다. 참고로 죽지 않는게 좋긴 하지만,....디버깅하려면..쿨럭..
고수님들의 조언 부탁 드립니다.
Forums:
답글입니다.
signal() 함수는 대기열이 없으므로 여러개 signal 이 발생하였을 경우
처음 발생한 signal만 처리하므로 이러한 현상이 발생된것 같습니다.
이걸로 바꿔서 테스트 해보세요..
Re: 답글입니다.
그렇다면 제대로 수행되는 것들은 왜 되는거죠?
그리고..제가 동시에는 수행을 못한다고 생각하는데...
화일을 쓰고 읽는 부분에서 지연시간(?)이 생기고 그 사이에
두 가지 이상을 사용해서 인가?.....
알 수가 없네요.
댓글 달기