초짜 리눅스를 사랑하고 싶은 C 코더.. 입니다.
제가 이번에 서비스서버를 모니터링하는 Client를 만들었습니다.
근데 이놈이 불규칙적으로 죽어버리길래.. 구글링하다보니 SISPIPE를 알게되어서.
signal(SIGPIPE, SIG_IGN); // ignore SIGPIPE
요렇게 막아주었습니다.
네!! 갑자기 죽는일은 없어졌습니다.
하지만.. 이번에는 쓰레드한놈이 의문사 했습니다.. 정확히는 코드가 block 되었습니다.
시그널로 강제종료하였는데(종료시 2초의 딜레이를 주었습니다.) 갑자기 block되었던놈이 디버깅 메시지 몇줄 찍더니 종료되는 것 입니다.
그래서 다시 구글링을 하였더니 mutex의 임계영역 접근이 의심이 들어서
pthread_mutex_lock(&mutex_flag);
pthread_mutex_trylock(&mutex_flag);으로 바꾸고 기약없는 테스트 중입니다.