[질문]C++ 에서 시그널 처리 어떻게 하시나요?

rbosc의 이미지

안녕하세요.

C++ 로 프로그래밍 하는데.. 시그널 처리가 C 에 비해서 무척 어려운것 같습니다.

sigaction 의 sa_handler 에 assign 할 함수는 컴파일 시점에 주소를 확실히 해야하는 제약이 있는 것 같고

try catch 로 하려고 해도... 스택관계가 제약사항이고......

단순히 시그널 받으면 LOG 객체를 통하여 로그만 찍고 죽을려고 해도.. LOG 객체를 전역으로 잡지 않는 한,

참 쓰기가 어려운것 같습니다.

다른분들은 C++ 프로그래밍 할 때, 시그널 처리를 어떻게 하는지 궁금합니다.

ljs0766의 이미지

싱글턴으로 시그널 처리 클래스 만들고

void SignalHandler(int sig)
{
    cSigHandler *pInstSigHandler = cSigHandler::GetInstance();
 
    pInstSigHandler->SigHandler( sig );
}

위와 같은 방식으로 처리합니다.
아무리 머리를 굴려보아도 저 방법 말고는 마땅한 방법이 떠오르질 않더군요 ^^;;

다른 방법을 사용하시는 분들 의견 부탁드립니다.

ljs0766의 이미지

Necromancer의 이미지

글 내용을 잘못 봤네요.
제 글 삭제 요청합니다.

Written By the Black Knight of Destruction

Written By the Black Knight of Destruction