C++ 서버 프로그램에서 문제가 있습니다. 요청 XML은 프론트 엔드 (Java)에서 왔고 백엔드 서버 (C++)는 요청을 처리하고 응답 XML을 리턴합니다.프런트 엔드 Tomcat이 종료되면 C++ Server가 종료됩니다. 오류 "수신되지 않은 신호 [13] - SIGPIPE"
백엔드에 대한 요청을 제출 한 후 테스트의 일부로 우리는 Tomcat 서버를 삭제했습니다. 요청을 처리 한 후 백엔드 어플리케이션 (스레드 된 서버 어플리케이션)이 Tomcat 서버가 다운되었을 때 응답을 보내지 못했습니다. 서버는 "수신되지 않은 신호 [13] - [SIGPIPE]"오류를 던집니다. 우리는 sigalrm 및 sigterm 기능을 구현했습니다.
위의 신호 오류는 캡처되지 않습니다. sigaction이 도움이됩니까? 또한 일단 신호가 캡처되면 서버가 듣고있는 메인 루프로 돌아 가기 위해 수행해야 할 작업이 있습니까?
편집 :
우리는 송신() 함수는 매개 변수 MSG_NOSIGNAL을 가진 것을 발견했다. 이 매개 변수를 전달할 때 연결이 종료되면 send 함수는 SIGPIPE 신호를 던지지 않습니다.