이 스레드에 마지막 게시물을 올린 후 너무 오래 게시 한 것에 대해 사과드립니다.
추가 포인트 하나. 모든 프로그램이 정상적으로 종료되는 것은 아닙니다. 충돌 및 ctrl-C 등으로 인해 프로그램이 제어되지 않은 방식으로 종료됩니다. OS가 힙을 해제하지 않고, 스택을 정리하고, 정적 변수를 삭제하는 등의 작업을 수행하지 않으면 결국 시스템이 메모리 누수로 인해 충돌하거나 더 나빠질 수 있습니다.
이 외에도 흥미롭게도 우분투에서 충돌 / 중단이 발생하고 다른 모든 최신 OS에는 "처리 된"리소스에 문제가 있다고 생각합니다. 소켓, 파일, 장치 등은 프로그램이 종료 / 충돌 될 때 "열려있는"상태로 유지 될 수 있습니다. 또한 정상 종료 전에 정리의 일부로 "핸들"또는 "설명자"로 모든 항목을 닫는 것이 좋습니다.
현재 소켓을 많이 사용하는 프로그램을 개발 중입니다. 교수형에 갇 히면 ctrl-c를 눌러 소켓을 좌초시켜야합니다. 모든 열린 소켓 목록과 sigint 및 sigterm을 포착하는 sigaction 핸들러를 수집하기 위해 std :: vector를 추가했습니다. 핸들러는 목록을 살펴보고 소켓을 닫습니다. 나는 조기 종료로 이어질 던지기 전에 사용할 유사한 정리 루틴을 만들 계획입니다.
이 디자인에 대해 언급하고 싶은 사람이 있습니까?