프로그램시 인터럽트나 시그널발생시 객체의 소멸자를 부르는 방

이우중의 이미지

C++로 프로그램을 짜다가 고민에 빠졌습니다.

문제는 키보드 인터럽트나 혹은 다른 시그널에 의해서 프로그램이 종료가 될때 현재 생성되어 있는 객체의 소멸자를 어떻게 불러야 할것인가 하는 점입니다.

signal 함수에 객체의 멤버 함수는 등록이 될 수 없습니다.

하나의 대안으로 extern "C" { } 로 정의된 함수에서
소멸하고자 하는 객체의 레퍼런스를 저장하고 있는 객체의 static 멤버 함수를 호출하는 방법이 하나의 방법이 될 수 도 있을 것입니다.

하지만 뭔가 깔끔한 패턴이나 좋은 디자인이 언듯 떠오르질 않네요

혹시 좋은 방법이 없을까요 ? :-)

drost의 이미지

단 하나만 존재하는 전역적인 객체의 인스턴스는 C++에서 주로 singleton 이라는 패턴으로 작성이 됩니다.

굳이 따로 레퍼런스를 만들거나 하지 않고, 인스턴스의 레퍼런스 역시 모두 singleton의 하나의 메소드로 가능하니까 깔끔해지고 괜찮은 방법이 아닐까, 하고 생각해봅니다.